我正在尝试在if语句中执行某项操作,此方法适用于除Android L(最新测试)以外的所有版本的android(由于getDrawable导致16或更高版本)。代码如下:

if (item.getIcon().getConstantState().equals(getResources().getDrawable(R.drawable.add_to_fav_normal).getConstantState())


任何帮助/提示或解释将不胜感激!

最佳答案

使用item.getContext().getDrawable(int)或等效的ContextCompat方法。

从API 21开始,所有加载可绘制对象的框架小部件都使用Context.getDrawable(),它在通货膨胀期间应用上下文的当前主题。这基本上只是内部调用getResources().getDrawable(..., getTheme()),因此您也可以使用context.getResources().getDrawable(..., context.getTheme())

     if (item.getIcon().getConstantState().equals(item.getContext()
                .getDrawable(R.drawable.add_to_fav_normal).getConstantState())


通常,尽管如此,您不应该依赖此检查。没有任何API保证可以确保您从特定的drawable处获得什么恒定状态。

09-29 22:42