android关于控件中setTag(key,Object)的设置的相关问题

setTag () 是 Android 的 View 类中很有用的一个方法,可以用它来给控件附加一些信息,在很多场合下都得到妙用。




所以抛出IllegalArgumentException 的原因就在于 key 不唯一,那么如何保证这种唯一性呢?

很明显定义一个 final 类型的 int 变量和硬编码一个值的方式都是行不通的。

比如下面一个错误的例子:

private static final int TAG_ONLINE_ID = 1;
((Button)row.findViewById(R.id.btnPickContact)).setTag(TAG_ONLINE_ID,objContact.onlineid);

05-18 20:29:38.044: ERROR/AndroidRuntime(5453): java.lang.IllegalArgumentException: The key must be an application-specific resource id.
05-18 20:29:38.044: ERROR/AndroidRuntime(5453):at android.view.View.setTag(View.java:7704)
05-18 20:29:38.044: ERROR/AndroidRuntime(5453):at com.mypkg.viewP.inflateRow(viewP.java:518)

那如果一定需要使用多个 tag 绑定怎么做呢? 那么这么做,在res/values/strings.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");

就这就保证了 key 值的唯一性。


取值

String tag_first=v.getTag(R.id.tag_first).tostring();

From: http://blog.csdn.net/brokge/article/details/8536906


评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值