常量状态在开发人员预览android L中不匹配

job*_*ert 1 resources android equals imageview android-5.0-lollipop

我试图在if语句中做一些事情,这适用于Android的每个版本(因为getDrawable都是16或更高版本),除了Android L(最新测试).代码如下:

if (item.getIcon().getConstantState().equals(getResources().getDrawable(R.drawable.add_to_fav_normal).getConstantState())
Run Code Online (Sandbox Code Playgroud)

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

ala*_*anv 6

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

从API 21开始,加载drawables的所有框架小部件都使用,这些小部件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())
Run Code Online (Sandbox Code Playgroud)

但是,一般情况下,您不应该依赖此检查.对于从特定drawable中获得的常量状态,没有API保证.