Android getColor 过期问题
2017-05-23 本文已影响0人
用心感受世界
如果你的Android项目中这行代码过期了
getResources().getColor(R.color.black);
可以尝试用代替
ContextCompat.getColor(this,R.color.black);
这个是兼容 全API版本的,方法里自己带有当API大于及小于23的判断
public static final int getColor(Context context, @ColorRes int id) {
final int version = Build.VERSION.SDK_INT;
if (version >= 23) {
return ContextCompatApi23.getColor(context, id);
} else {
return context.getResources().getColor(id);
}
}
api 大于等于23 的方法核心是context.getColor(id);
class ContextCompatApi23 {
public static ColorStateList getColorStateList(Context context, int id) {
return context.getColorStateList(id);
}
public static int getColor(Context context, int id) {
return context.getColor(id);
}
}
事实上在单独运行
context.getColor(id);
时候会提示你需要API版本为23,我的当前最小支持版本是16,所以....不能用
而小于23版本的方法
getResources().getColor(R.color.black);
直接划一道横线,很干脆的告诉你过时了...
所以
ContextCompat.getColor(this,R.color.black);
是最好的选择