2011-04-28 84 views
1

如何以编程方式将附加信息附加到按钮上?我可以mButton.setText(“新文本”)来更改文本,但是我希望能够添加更多的字段,以便当您单击按钮时,您可以获取这些额外的字段并使用数据。我该怎么做?使用按钮存储附加信息

回答

7

使用View.setTag(INT键,对象标记)字段和方法。

您可以稍后使用getTag(int key)检索它。

在你的XML:

<?xml version="1.0" encoding="utf-8"?> 
<resources> 
    <item type="id" 
     name="string_key" /> 
    <item type="id" 
     name="boolean_key" /> 
</resources> 

在您的代码:

//I'd like to store String s and Boolean b in the button. 
button.setTag(R.id.string_key, s); 
button.setTag(R.id.boolean_key, b); 

//Now, I'd like to retrieve the data in new fields. 
String new_s = (String) button.getTag(R.id.string_key); 
Boolean new_b = (Boolean) button.getTag(R.id.boolean_key); 
+0

当我尝试时,我得到一个IllegalArgumentStatement,“密钥必须是特定于应用程序的资源ID”。 – Roger 2011-04-28 15:44:45

+0

我的错误!该ID需要在xml中声明以确保它是唯一的。有关详细信息,请参阅http://developer.android.com/guide/topics/resources/more-resources.html#Id“ – Cephron 2011-04-28 15:55:33

+0

另外,如果您只需要存储一个字段,则可以使用setTag(Object tag)和getTag() - 但你似乎想要存储多个字段,这就是为什么需要id。 – Cephron 2011-04-28 15:57:31

1

你总是可以扩展Button类,并添加你需要

+0

请不要这样做。或者至少不要让我继承你的代码,并且必须维护和修复它。 – 2011-04-28 15:37:00

0

您可以使用Tag属性。给它分配一个字符串[如果你有多个值使用管道字符(|)并稍后分割]或者你可以分配一个对象。