小编Ali*_*ani的帖子

API级别23中不推荐使用setTextAppearance

public void setTextAppearance(Context context,int resId)在API级别1中添加
此方法在API级别23中已弃用.请改用setTextAppearance(int).

我的问题:为何被弃用?为什么它不再需要Context了?最重要的是,如何使用setTextAppearance(int resId)旧版本?

android deprecated

45
推荐指数
2
解决办法
2万
查看次数

在非加权无向图中去除最小边缘以强制增加最短路径长度的算法

给定未加权无向图的邻接矩阵,是否有一种有效的方法(多项式算法)来扩展/增加任何给定的两个节点s和t之间的最短路径的长度?

例:

在下面的例子中,从顶点s = 1到顶点t = 5有5个不同的"最短路径",每个都有3个长度.我想删除最少数量的边缘,以便最短路径长度被强制为4或更多.(断开图表是可以的.)

邻接矩阵(扩展以纠正示例):

 0 1 0 0 0 1 1 1 0 1 0 
 1 0 1 1 0 0 0 0 0 0 0  
 0 1 0 0 1 0 0 0 0 0 1 
 0 1 0 0 1 1 0 0 0 0 0  
 0 0 1 1 0 1 0 0 0 0 0 
 1 0 0 1 1 0 0 0 1 0 0 
 1 0 0 0 0 0 …
Run Code Online (Sandbox Code Playgroud)

algorithm graph-theory shortest-path graph-algorithm

8
推荐指数
1
解决办法
1215
查看次数

从 java 模块引用 android 库

长话短说!

我想向 Java 模块添加一个 Android 库依赖项,它说

警告:忽略模块 'backtory-android-sdk' 对模块 'javasample' 的依赖。Java 模块不能依赖于 Android 模块

backtory-android-sdk没有与 Android 相关的“编译依赖项”(类似于改造),如果有办法将依赖项添加到backtory-android-sdk“classes.jar”,我认为它会起作用。我怎样才能做到这一点?

说明问题...

我正在开发一个主要执行网络请求 ( backtory-android-sdk)的 Android 库,并且不太依赖于 Android 的东西,因此它可以被初始化并在 java 项目中使用。我还有一个 Java 模块(一个名为 的控制台项目javasample)用于手动测试 Android 库(也被团队的其他成员用于一些自动化测试)。这是混乱:

  • 如果我定义backtory-android-sdk为 Android 库,则无法从 中引用它javasample,抱怨警告:忽略模块 'javasample' 上模块 'backtory-android-sdk' 的依赖关系。Java 模块不能依赖于 Android 模块
  • 如果我将其定义为 Java 模块,则前面的问题解决了,但我们的用户至少必须手动添加一些清单内容(我们的 SDK 目前是一个 Android 库模块)。由于我们几乎所有的 SDK 用户都是 Android 开发人员,因此这不是很理想。

由于我知道只能发布 Android 库的源代码,因此我认为最好坚持使用 Android 库模块并将其发布为 AAR 和 JAR 两种类型,然后问题减少到引用backtory-android-sdkfrom javasample.

dependencies android gradle

8
推荐指数
1
解决办法
1323
查看次数

动态计算使用StaggeredGridLayoutManager填充的RecyclerView的大小

我有一个RecyclerViewStaggeredGridLayoutManager 里面ScrollView.由于你不能设置WRAP_CONTENT参数RecylerView(不支持它),我必须动态地计算视图的高度.(适配器动态填充.它是一个无限的滚动视图).您可以在Pinterest应用程序中找到类似的行为.(如下图).我还编写了布局视图层次结构.

<ScrollView>
  <LinearLayout>
    <some_layouts>
     .
     .
    </some_layouts>  
    <RecyclerView>
    </RecyclerView>  
  <LinearLayout>
<ScrollView>
Run Code Online (Sandbox Code Playgroud)

如何才能在我的应用程序中获得相同的功能?我在课程api中挖掘但没有发现任何东西.谁可以帮我这个事?

在此输入图像描述

android android-recyclerview

5
推荐指数
1
解决办法
717
查看次数

在外部存储中创建新文件的权限被拒绝

如果该文件不存在,我想在外部存储中创建一个新文件。我已经在 SO 中阅读了类似的问题,并WRITE_EXTERNAL_STORAGE在我的清单中获得了许可。在使用 android 5.1 和 xperia t 使用 android 4.3 的 GenyMotion 模拟器上测试结果是一样的,我得到“打开失败:EACCES(权限被拒绝)file.createNewFile()。我检查了运行时,getExternalStorageStatefunctoin 返回值是 "MOUNTED "

注意:如果我手动创建文件,我的代码可以完美运行并读取内容,这意味着可以访问外部存储。我虽然在我的代码中的另一个地方写入外部存储getExternalPublicStorage用于保存捕获的图像,但它工作正常!

File f = Environment.getExternalStorageDirectory();
File config = new File(f, "poinila config" + ".txt");
if (!config.exists()) {
    if (!config.createNewFile()) {
        // toast that creating directory failed
    } else {
        writeDefaultIpPort();
    }
}
Run Code Online (Sandbox Code Playgroud)

编辑: 路径字符串是“/storage/sdcard0/poinila config.txt”

android android-external-storage

5
推荐指数
1
解决办法
5769
查看次数

MockRetrofit和BehaviorDelegate忽略OkHttpClient

我正在为我们的MBaaS服务编写SDK.我Retrofit2用于我的REST调用.

我有一个Interceptor(非常类似于这个)来刷新一个过期的令牌,它做了一个相当复杂的if-else案例.为了测试拦截器,我需要模拟我使用MockRetrofit库做的API .到现在为止还挺好!(有关我的拦截器类的一些信息,请参阅问题的结尾)

这是代码:

@Before
public void setup() {
    Retrofit retrofit = new Retrofit.Builder()
        .baseUrl(BacktoryClient.BASE_URL)
        .client(new OkHttpClient.Builder().addInterceptor(new RetryWithRefreshedTokenInterceptor()).build())
        .build();

    NetworkBehavior behavior = NetworkBehavior.create();
    MockRetrofit mockRetrofit = new MockRetrofit.Builder(retrofit)
        .networkBehavior(behavior)
        .build();

    delegate = mockRetrofit.create(AuthApiDefinition.class);
}

@Test
public void testRetryWithRefreshedToken() throws Exception {
    SimpleMock apiMock = new SimpleMock(delegate);
    Response<SomeApiResponse> response = apiMock.someApiCall(<parameters>).execute();
    // assert part
}
Run Code Online (Sandbox Code Playgroud)

问题是response测试方法中的对象应该是什么(指示模拟部分是正常的)但是RetryWithRefreshedTokenInterceptor拦截器没有被调用.所以我认为MockRetrofit忽略了OkHttpClient.

现在问真正的问题,这是某种错误还是我完全误解了MockRetrofit库的用法?如果是你,你是如何测试拦截器的?


有关RetryWithRefreshedTokenInterceptor的更多信息:它检查响应代码是否为401,如果是,则调用我们的SDK方法,该方法本身调用我们的API方法(此处来自模拟的API)以获取新标记并将其保存在持久存储中(拦截器中使用的API方法处理的逻辑量足够大,我无法隔离拦截器来测试它MockWebserver)

android unit-testing mocking retrofit2 okhttp3

5
推荐指数
0
解决办法
326
查看次数

ACTION_MANAGE_OVERLAY_PERMISSION 未重定向到 Api 30 中的应用程序页面

要请求用户授予“允许在其他应用上显示”权限,可以发送一个IntentwithSettings.ACTION_MANAGE_OVERLAY_PERMISSION动作。对于 R 之前的 Android 版本(API 版本 < 30),它会直接转到应用设置页面中的此特定设置,但对于 API 30,它会转到“在其他应用上显示”权限页面,这对用户体验非常不利。

我读到这是一种预期行为,但是有解决方法吗?对于需要显示捕获覆盖按钮的屏幕截图应用程序,有哪些替代方案?

android android-intent android-permissions

5
推荐指数
1
解决办法
645
查看次数

使用 htmx 发送两个输入值的组合

我正在编写一个简单的网站Django,我决定尝试在客户端使用htmx库来加载 html 片段。现在我想按不同字段对列表进行升序和降序排序。我有这样的事情:

<div class="col-auto">
  <div class="input-group input-group-sm">
    <select id="np-sort-key" name="key" class="form-select">
      <option value="publish_date" selected>Publish date</option>
      <option value="title">Title</option>
    </select>
    <button class="btn btn-outline-dark" type="button">
      <span class="bi bi-sort-down"></span> <!-- bi-sort-up for Asc icon -->
    </button>
  </div>
</div>
Run Code Online (Sandbox Code Playgroud)

我想将order_by=<order><key>查询参数添加/替换到当前网址(例如 /articles?page=2&order_by=-publish_date。),并在“选择”更改和“按钮”单击时将其发送回 Django 视图。端点返回一个 Html,我想用 Htmx 将它与另一个 Html 节点交换。(请注意,单击按钮时应更改跨度类以显示排序是 Asc 或 Dsc)

可以使用吗htmx?如果没有,欢迎使用简单的 Javascript 解决方案。

javascript htmx

5
推荐指数
1
解决办法
7455
查看次数

Clip在Java中播放带有坏滞后的WAV文件

我写了一个代码来读取WAV文件(大小约为80 MB)并播放它.问题是声音播放严重(极端滞后).你能告诉我这是什么问题吗?

这是我的代码:(我doPlay在Jframe构造函数中调用函数)

private void doPlay(final String path) {
    try {
        stopPlay();
        InputStream is = new FileInputStream(path);
        InputStream bufferedIn = new BufferedInputStream(is);
        AudioInputStream ais = AudioSystem.getAudioInputStream(bufferedIn);
        AudioFormat format = ais.getFormat();
        // this is the value of format.
        // PCM_SIGNED 44100.0 Hz, 16 bit, stereo, 4 bytes/frame, little-endian
        DataLine.Info info = new DataLine.Info(Clip.class, format);
        clip = (Clip)AudioSystem.getLine(info);
        clip.open(ais);
        clip.start();
    } catch (Exception e) {
        stopPlay();
        e.printStackTrace();
    }
}
Run Code Online (Sandbox Code Playgroud)

java audio wav javasound

4
推荐指数
1
解决办法
2046
查看次数

当孩子被点击时触发父点击事件

我不熟悉 javaScript 和 jQuery。当您单击其子元素时,如何调用父元素的单击事件?我的代码中有这个结构:

<ul id="pc5">
   <li><a href="#">book</a>
   </li>
</ul>
Run Code Online (Sandbox Code Playgroud)

我想要这样的东西:

$("a").click(ul.click);
Run Code Online (Sandbox Code Playgroud)

任何帮助,将不胜感激。

编辑:在我的 ul 点击功能中,我需要 ul id 属性。像这样:

 ul.click(function(e){alert(e.target.id);
Run Code Online (Sandbox Code Playgroud)

所以当链接被点击时, event.target 不是 ul 元素。

html javascript jquery events

2
推荐指数
2
解决办法
2万
查看次数