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!”); }
