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)