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://blog.csdn.net/furongkang/article/details/7267317

View.setTag(key,object)异常:The key must be an application-specific resource id.的更多相关文章

  1. [Android] View.setTag(key,Object) (java.lang.IllegalArgumentException: The key must be an application-specific resource id.)

    转自: http://blog.csdn.net/brokge/article/details/8536906 setTag是android的view类中很有用的一个方法,可以用它来给空间附加一些信息 ...

  2. AES加密时的 java.security.InvalidKeyException: Illegal key size 异常

    程序代码 // 设置加密模式为AES的CBC模式 Cipher cipher = Cipher.getInstance("AES/CBC/NoPadding"); SecretKe ...

  3. JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)

    测试又报bug啦 接到测试小伙伴的问题,说是一个接口不返回数据了,好吧,虽然不是我写的接口任务落到头上也得解决,本地调试了一下,好家伙,直接抛了个异常出来,这又是哪位大哥喝醉了写的代码... Exce ...

  4. Object empty value key filter

    Object empty value key filter 过滤空值 Utils emptykeysFilter() "use strict"; /** * * @author x ...

  5. 大型网站技术架构(四)--核心架构要素 开启mac上印象笔记的代码块 大型网站技术架构(三)--架构模式 JDK8 stream toMap() java.lang.IllegalStateException: Duplicate key异常解决(key重复)

    大型网站技术架构(四)--核心架构要素   作者:13GitHub:https://github.com/ZHENFENG13版权声明:本文为原创文章,未经允许不得转载.此篇已收录至<大型网站技 ...

  6. JavaScript系列-----对象基于哈希存储(<Key,Value>之Key篇) (1)

    1.Hash表的结构 首先,允许我们花一点时间来简单介绍hash表. 1.什么是hash表 hash表是一种二维结构,管理着一对对<Key,Value>这样的键值对,Hash表的结构如下图 ...

  7. Flink 自定义source和sink,获取kafka的key,输出指定key

    --------20190905更新------- 沙雕了,可以用  JSONKeyValueDeserializationSchema,接收ObjectNode的数据,如果有key,会放在Objec ...

  8. mysql联合索引阻碍修改列数据类型:BLOB/TEXT column 'name' used in key specification without a key length

    今天在项目中mysql表中有一个字段数据类型为varchar,长度不够需要换为text类型 当时表是已经存在的表, CREATE TABLE `table_aaa` ( `id` int NOT NU ...

  9. 对于json对像,怎么遍历json对象的所有key,在使用json对象时,如果无法知道key,怎么通过key变量来获取值

    对于json对像,怎么遍历json对象的所有key,在使用json对象时,如果无法知道key,怎么通过key变量来获取值?请参阅下面的关键代码: <html> <head> & ...

随机推荐

  1. jquery 操作select 资料

    每一次操作select的时候,总是要出来翻一下资料,不如自己总结一下,以后就翻这里了. 比如<select class="selector"></select&g ...

  2. [PHP] - Laravel - 修改laravel_session的cookie名称

    修改Cookie laravel_session的名称方法: 打开文件:config\session.php 找到值:laravel_session 修改为你所需要的cookie名称即可. 当然,还有 ...

  3. windows下docker环境设置

    1.下载docker-install.exe安装VirtualBox.Git.Boot2Docker for Windows 2.设置环境变量,启动boot2docker Core Linux. 可以 ...

  4. NC营改增

    收票 select * from jzinv_receive  where vinvno='04888118' 1045select * from bd_corp where pk_corp='104 ...

  5. Hadoop总结篇之一------开篇

    从今天开始新的系列:Hadoop总结篇 之前的hadoop学习篇由于是学习过程中随手记下来的一些内容,不具有系统性.所以在这个系列中,将凭着这段时间的研究心得,来记录一些自认为比较重要的东西. 本系列 ...

  6. 集合Collection

    /* * 集合的由来: * 我们学习的是面向对象语言,而面向对象语言对事物的描述是通过对象体现的,为了方便对多个对象进行操作,我们就必须把这多个对象进行存储. * 而要想存储多个对象,就不能是一个基本 ...

  7. IIS7.0上传文件限制的解决方法

    在 Windows7(iis7.5).Win2008(iis 7.0)和Win2003(iis 6.0) 中,默认设置是特别严格和安全的,这样可以最大限度地减少因以前太宽松的超时和限制而造成的攻击. ...

  8. Python操作Excel之xlrd

    import xlrdworkbooks=xlrd.open_workbook("test.xlsx")print(workbooks.sheet_names())#获取sheet ...

  9. centos 7 + mono + jexus 环境安装

    1.安装 mlocate yum list|grep locate yum install mlocate.x86_64 updatedb 2.安装 yum-utils yum list|grep y ...

  10. mvc ajax csrf

    http://www.cnblogs.com/zhyp/p/5556980.html http://www.asp.net/web-api/overview/security/preventing-c ...