Android Logcat说:“这是一个很好的例子。”;资源具有未解析的主题属性“;

Android Logcat说:“这是一个很好的例子。”;资源具有未解析的主题属性“;,android,resources,warnings,drawable,logcat,Android,Resources,Warnings,Drawable,Logcat,记录我的应用程序我的日志猫说:警告:。。。具有未解析的主题属性!考虑使用Realth.GutDable(int,主题)或上下文.GETDababl(int).< /代码> < /P> 产生警告的代码: if (mCards.get(position).isFavorite()) { viewHolder.mIbStar .setImageDrawable(mContext.getResources()

记录我的应用程序我的日志猫说:警告:
。。。具有未解析的主题属性!考虑使用Realth.GutDable(int,主题)或上下文.GETDababl(int).< /代码> < /P>
产生警告的代码:

    if (mCards.get(position).isFavorite()) {
        viewHolder.mIbStar
                .setImageDrawable(mContext.getResources()
                                          .getDrawable(R.drawable.btn_is_fav));
    } else {
        viewHolder.mIbStar
                .setImageDrawable(mContext.getResources()
                                          .getDrawable(R.drawable.btn_isnt_fav));
    }
我搜索了这个日志,但没有找到任何有用的东西。怎么知道是什么问题?程序是稳定的,因此没有空指针


提前感谢

问题在于系统无法找到相关主题来解析这些属性值。 这就是为什么logcat建议您使用提供主题的方法, 或使用上下文将使用其当前主题的方法:

返回与特定资源ID关联的可绘制对象,并 为当前主题设计样式

此外,根据Android官方文档:

此方法在API级别22中被弃用。改用

更具体地说

注意:若要获得主题可绘制文件,请使用或 传递所需的主题

考虑更换

mContext.getResources().getDrawable(int) 


例如,建议使用logcat。

我不知道问题出在哪里,但logcat的输出似乎很清楚。您必须将
mContext.getResources().getDrawable
替换为
mContext.getDrawable
,谢谢您的快速回答。我之前尝试过这个方法,但是这个方法适用于API>=21。。。因此,我可能会提供一种方法来加载旧版本的内容。现在我将代码更改为:viewHolder.mIbStar.setBackgroundResource(R.drawable.btn_is_fav);似乎也是这样。。涟漪效应仍然可见:)好的,很高兴听到你解决了
setBackgroundResource
是最好的解决方案,我昨天没有考虑过。但是context.getDrawable(int)需要最小API级别21。事实上,我没有关注这一点。因此,在本例中,@ByteHamster在评论中提到的最佳解决方案是使用Try-to-use-ContextCompat。它提供了对API 4的向后兼容性。
mContext.getDrawable(int)