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'