gpt4 book ai didi

安卓工作室 : false Lint warning forcing usage of "Compat" classes when high min SDK (25)

转载 作者:行者123 更新时间:2023-12-03 20:46:57 25 4
gpt4 key购买 nike

我正在与 minSdkVersion 合作一个项目设置为 25 (又名安卓 7.1 )。
由于这个版本相当高,所以我可以使用很多方法而不必担心向后兼容性。
例如,检索 drawable ,来自 Fragment , 应该很简单:

context?.getDrawable(R.drawable.my_drawable)
在源代码中,它的作用是:
 return getResources().getDrawable(id, getTheme());
就我而言,API 21(Android 5.0)中引入了这种方法。
但是,我收到以下警告:
enter image description here
ContextCompat.getDrawable(...)的源码:
 if (Build.VERSION.SDK_INT >= 21) {
return context.getDrawable(id);
} else if (Build.VERSION.SDK_INT >= 16) {
return context.getResources().getDrawable(id);
} else { ... }
由于 min SDK 设置为 25,第一个 if 将始终被调用,然后是我编写的相同代码。那么为什么要发出警告呢?
我可以用 @SuppressLint("UseCompatLoadingForDrawables") 压制它但这有点违背目的......或者我可以遵循它......
这是正常的吗?我真的应该使用 ContextCompat及其附属公司,或者是否有某个地方可以删除这种错误的警告?
PS:该项目也是使用Android X。

最佳答案

遇到同样的问题。当您的 minSdk >= 21 时,我会说这是一个误报。因为正如您所说,您将始终进入调用 getDrawable 的 if 分支。
因此,抑制/忽略它是一种方法,直到有人可以使 lint 规则足够智能以检测到您的 minSdkVersion 高于 21。您可以通过在 build.gradle 中执行此操作来全局忽略它:

android { 
...
lintOptions {
ignore("UseCompatLoadingForDrawables")
}
}
有趣的是 context.getColor(R.color.something)即使它在 ContextCompat.getColor 中有类似的代码,也不会给出类似的警告.

关于安卓工作室 : false Lint warning forcing usage of "Compat" classes when high min SDK (25),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/65124097/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com