ContextCompat

ContextCompat
Android用ContextCompat替换getResources()获取资源; android SDK 升级到 23 之后,getResource.getColor(R.color.color_name) 过时, 可以使用新加入的方法 ContextCompat.getColor(context, R.color.color_name) 。
SDK 升级到 23 之后,Context类已经提供了getColor(int id)等一系列获取资源文件的方法。
源码跟踪:
@ColorInt
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);
}
}
context.getResources().getColor(id);
调用的是Resources的
public int getColor(int id) throws Resources.NotFoundException {
throw new RuntimeException(“Stub!”);
}
ContextCompatApi23.getColor(context, id);
调用的是ContextCompatApi23的
public static int getColor(Context context, int id) {
return context.getColor(id);
}
即最终调用的Context 的
public final int getColor(int id) {
throw new RuntimeException(“Stub!”);
}

你可能感兴趣的:(Android,android)