前言
在做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
<?xml version="1.0" encoding="utf-8"?> <resources> <item name="tag_view_media" type="id" /> </resources>
TAG_VIEW_MEDIA替换为R.id.tag_view_media 即可。
参考文章
《
© 版权声明