前言

在做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.

暂无评论

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

none
暂无评论...