getResources()。getColor()已被弃用
在我的gradle文件中使用: buildToolsVersion "22.0.1"
, targetSdkVersion 22
。
我发现有用的getResources().getColor(R.color.color_name)
已被弃用。
我应该用什么来代替?
看起来最好的方法是使用:
ContextCompat.getColor(context, R.color.color_name)
这将适当地select棉花糖二参数方法或前棉花糖方法。
以及它在Android M中弃用,所以你必须为Android M和更低的例外。 只需添加getColor
函数的当前主题。 你可以用getTheme()
获得当前的主题。
这将在片段中做到这一点,你可以用getBaseContext()
, yourContext
等代替getActivity()
来保存你当前的上下文
if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.M) { yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white, getActivity().getTheme())); }else { yourTitle.setTextColor(getActivity().getResources().getColor(android.R.color.white)); }
* ps:在M中不推荐使用颜色,但在L中不推荐使用drawable
我发现有用的getResources()。getColor(R.color.color_name)已被弃用。
根据文档 ,它在API 21级中不被弃用。
它在M Developer Preview中被弃用。 但是,replace方法(带有颜色资源ID和Resources.Theme
对象的双参数getColor()
)仅在M Developer Preview中可用。
因此,现在继续使用单参数getColor()
方法。 今年晚些时候,考虑在Android M设备上使用双参数getColor()
方法,回到旧设备上弃用的单参数getColor()
方法。
您需要使用ContextCompat.getColor(),它是Support V4 Library的一部分(所以它可以用于以前的所有API)。
ContextCompat.getColor(context, R.color.my_color)
按照文档中的规定,“从M开始,返回的颜色将为指定的上下文主题设置样式”。 所以不用担心
您可以通过将以下内容添加到应用程序build.gradle中的依赖项数组中来添加Support V4库:
compile 'com.android.support:support-v4:23.0.1'