Android:View.getTag / setTag和IllegalArgumentException

时间:2010-03-12 18:45:06

标签: android

是的,我知道在调用需要密钥的这些函数的版本时需要一个唯一的资源ID,但我不能在我的生活中弄清楚如何创建可以这种方式使用的资源ID。我班上的最后一个变量不会工作,硬编码值也不会。两者都抛出了IllegalArgumentException。那么是什么,你如何使用这些方法?

Spara

3 个答案:

答案 0 :(得分:44)

要创建资源ID,可以与您在XML中设置的资源ID(使用@+id)完全相同,请添加

<resources>
    <item type="id" name="myId"/>
</resources>

res/values/中的XML中。

答案 1 :(得分:14)

来自the Javadoc

  

指定的密钥应该是在应用程序的资源中声明的id ,以确保它是唯一的。

因此,您不能仅仅组成值并将它们放在局部变量中。

您创建的每个资源,无论是字符串(R.string.*),还是布局(R.layout.*)或个人ViewR.id.*)都可以拥有ID。这是你必须要做的事情。

如果您确实需要针对单个View存储多个对象,则需要使用R.id变体作为关键字,例如someView.setKey(R.id.my_key_1, someObject)

答案 2 :(得分:0)

您可以使用此代码:

<resources xmlns:android="http://schemas.android.com/apk/res/android">
  <item name="TAG_ONLINE_ID" type="id"/>
</resources>