导航号,我的单页导航
目录

前言

在做ListView+Adapter时,为了重复利用convertView,如下

if (null != convertView) {
    viewHolder = (ViewHolder) convertView.getTag(TAG_VIEW_MEDIA);
} else {
    viewHolder = new ViewHolder();
    //略
    convertView.setTag(TAG_VIEW_MEDIA, viewHolder);
}

如果存在多个Tag时,通过key进行setTag和getTag,如果tag_view_media不是唯一就会如下异常。

UncaughtException detected: java.lang.IllegalArgumentException: The key must be an application-specific resource id.
        at android.view.View.setTag(View.java:24464)

正文

原因

虽然TAG_VIEW_MEDIA是final的常量,当并不是唯一的,而且Android要求:The key must be an application-specific resource id

解决方式

在values中创建一个ids.xml

values/ids.xml
<?xml version="1.0" encoding="utf-8"?>
<resources>
    <item name="tag_view_media" type="id" />
</resources>

TAG_VIEW_MEDIA替换为R.id.tag_view_media 即可。

参考文章

  1. 【Bug】The key must be an application-specific resource id.

版权声明 1、 本站名称 91易搜
2、 本站网址 https://www.91es.com/
3、 本站部分文章来源于网络,仅供学习与参考,如有侵权请留言
4、 本站禁止发布或转载任何违法的相关信息,如有发现请向站长举报
导航号,我的单页导航

暂无评论

评论审核已启用。您的评论可能需要一段时间后才能被显示。

暂无评论...