gpt4 book ai didi

android - API 23 中的 ContextCompat.getColor 崩溃(找不到 Context.getColor)

转载 作者:太空宇宙 更新时间:2023-11-03 10:57:53 26 4
gpt4 key购买 nike

我正在使用 ContextCompat.getColor 获取颜色资源,并向后兼容已弃用的方法,例如 ContextgetColor

例如:

ContextCompat.getColor(context, R.color.black)

到目前为止,它在我使用过的任何地方都运行良好,但我在我的应用程序的崩溃日志中发现了很多问题,如下所示:

Caused by java.lang.NoSuchMethodError: No virtual method getColor(I)I in class Landroid/content/Context; or its super classes (declaration of 'android.content.Context' appears in /system/framework/framework.jar)
at android.support.v4.content.ContextCompat.getColor(ContextCompat.java:418)
at com.myapp.MyView.method(MyView.kt:XXX)

查看手机/Android 版本,它们都属于 Marshmallow 系列 (6.0 – 6.1),并且我添加了一些围绕 API 检测的日志记录,并且可以确认它们处于 API 级别 23。

厂商方面,分别是小米、联想、中兴、OPPO。

目前我的解决方案是:

int color;
try {
color = ContextCompat.getColor(context, colorRes);
} catch (NoSuchMethodError e) {
if (Build.VERSION.SDK_INT != Build.VERSION_CODES.M) {
// log for a while, to catch if any other versions/devices have issues
Timber.e(
e,
"Couldn't use getColor in API level %s (%s)",
Build.VERSION.SDK_INT,
Build.VERSION.RELEASE
);
}
color = context.getResources().getColor(colorRes);
}
// Now I know color has a value :D

这工作正常,但远非理想,因为我希望能够透明地使用 ContextCompat 而忘记它。

我已经尝试过 appcompat 版本 27.1.028.0.0。有没有人遇到过这个问题?有更好的处理方法吗?

最佳答案

ContextCompat.getColor() 是支持 V4 库的一部分。

ContextCompat.getColor(YourActivity.this, R.color.my_color)

您需要通过在您的应用程序 build.gradle 中添加以下依赖项来添加支持 V4 库:

compile 'com.android.support:support-v4:23.0.1'

希望对您有所帮助。

关于android - API 23 中的 ContextCompat.getColor 崩溃(找不到 Context.getColor),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53014107/

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