我正在尝试在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处获得什么恒定状态。