博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
View.setTag(key,object)异常:The key must be an application-specific resource id.
阅读量:6202 次
发布时间:2019-06-21

本文共 3329 字,大约阅读时间需要 11 分钟。

 

07-11 13:43:26.184: E/AndroidRuntime(10229): FATAL EXCEPTION: main

07-11 13:43:26.184: E/AndroidRuntime(10229): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.txrj.sms/com.txrj.sms.activity.CreateMessageActivity}: java.lang.IllegalArgumentException: The key must be an application-specific resource id.
07-11 13:43:26.184: E/AndroidRuntime(10229):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1970)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1995)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at android.app.ActivityThread.access$600(ActivityThread.java:128)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1161)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at android.os.Handler.dispatchMessage(Handler.java:99)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at android.os.Looper.loop(Looper.java:137)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at android.app.ActivityThread.main(ActivityThread.java:4517)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at java.lang.reflect.Method.invokeNative(Native Method)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at java.lang.reflect.Method.invoke(Method.java:511)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:993)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:760)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at dalvik.system.NativeStart.main(Native Method)
07-11 13:43:26.184: E/AndroidRuntime(10229): Caused by: java.lang.IllegalArgumentException: The key must be an application-specific resource id.
07-11 13:43:26.184: E/AndroidRuntime(10229):     at android.view.View.setTag(View.java:12585)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at com.txrj.sms.activity.CreateMessageActivity.getRecipientItem(CreateMessageActivity.java:47)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at com.txrj.sms.activity.CreateMessageActivity.onCreate(CreateMessageActivity.java:41)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at android.app.Activity.performCreate(Activity.java:4470)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1053)
07-11 13:43:26.184: E/AndroidRuntime(10229):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1934)
07-11 13:43:26.184: E/AndroidRuntime(10229):     ... 11 more

原因分析:

setTag是android的view类中很有用的一个方法,可以用它来给空间附加一些信息,在很多场合下都得到妙用。

setTag(Object tag)方法比较简单,这里主要谈一谈带两个参数的setTag方法。

官方的api文档中提到:

“The specified key should be an id declared in the resources of the application to ensure it is unique (see the ID resource type). Keys identified as belonging to the Android framework or not associated with any package will cause an IllegalArgumentExceptionto be thrown.”

所以抛出IllegalArgumentException的原因就在于key不唯一,那么如何保证这种唯一性呢?定义一个final类型的int变量和硬编码一个值的方式都是行不通的。

如果只需要设置一个tag,那么直接调用setTag(Object tag)方法就可以轻松搞定,如果一定需要使用多个tag绑定,那么需要先在res/values/ids.xml中添加

<resources>

    <item type="id" name="tag_first"></item>
    <item type="id" name="tag_second"></item>
</resources>

 
使用的时候写成
 
imageView.setTag(R.id.tag_first, "Hello");imageView.setTag(R.id.tag_second, "Success");
 
就可以了
 
参考:

转载地址:http://gqmca.baihongyu.com/

你可能感兴趣的文章
JavaScript设计模式: 对象创建
查看>>
The Master of Science degree in Computer Scienc
查看>>
使用Docker镜像
查看>>
Web前端学习第十四天·fighting_JavaScript概述
查看>>
创建wifi热点---让手机共享笔记本网络
查看>>
通过判断自定义属性的值给出不同的样式
查看>>
SeaJS 模块化加载框架使用
查看>>
VMware Workstation 8安装CentOS 6字符界面
查看>>
print函数用法总结
查看>>
spring 整合redis
查看>>
会议论文重新投稿算不算侵权?这肯定是所多人都遇到过的问题(转)
查看>>
JBoss配置解决高并发连接异常问题(转)
查看>>
1.1线性方程组
查看>>
2013nanjingJ
查看>>
PHP中使用foreach引用需要注意的问题
查看>>
距离的计算及分页排序
查看>>
[日常] Go语言圣经-Slice切片习题
查看>>
python while循环语句
查看>>
UI线程同步
查看>>
Centos安装zeromq, jzmq
查看>>