在运行时更改组件的 ID 名称

Posted

技术标签:

【中文标题】在运行时更改组件的 ID 名称【英文标题】:changing component's id name at run time 【发布时间】:2013-10-19 10:42:18 【问题描述】:

是否可以在运行时更改id 组件的名称?

<ImageButton android:id="@+id/ImageButton01"
    android:layout_ android:layout_
    android:layout_alignParentBottom="true"
    android:layout_alignParentRight="true" android:background="@drawable/single_square"
    android:onClick="itemSelected"
     />

onClick 方法添加随机背景图像。后来,当它第二次点击时,我想知道添加了什么背景图片。为此,我想在第一次单击时将此组件的 id 名称 (ImageButton1) 更改为设置的图像名称(例如,key_image)。我该怎么做?

【问题讨论】:

为什么要改id?如果您只是想跟踪图像名称,则可以只使用字符串变量,或者(可能更可取)按钮上的 setTaggetTag 方法。 感谢 Mike M。你的想法比我的好。我怎样才能接受您的评论作为答案? 另外,如果您能详细说明,因为我以前从未使用过它们 【参考方案1】:

如果您只想跟踪图像名称,则无需更改 id。只需使用单独的 String 变量,或(可能更可取)Button 上的 setTaggetTag 方法。

一个对象的标签实际上只是一个存储该对象附加信息的地方。因此,在您的情况下,如果您有一个按钮 btn,并且您想将 imageName 之类的字符串与它相关联:

btn.setTag(imageName);

要检索字符串,请使用:

String lastImageName = (String) btn.getTag();

注意:标签可以是任何对象。它不一定是字符串,事实上,这就是为什么我们需要在我们的示例中使用 (String) 强制转换 getTag 结果。

【讨论】:

【参考方案2】:

您可以使用ImageButtonsetId(id) 方法为您的ImageButton 设置一个ID..

imagebutton.setId(someId);

【讨论】:

以上是关于在运行时更改组件的 ID 名称的主要内容,如果未能解决你的问题,请参考以下文章

在运行时按需更改组件类

服务运行时无法更改服务名称

如何在运行时动态更改组件模板?角 4

如何在运行时给出数据库名称并将所有更改迁移到它

在 HIVE 中运行查询时如何更改 Tez 作业名称

如何在 OSX 上的应用程序运行时获取更改名称的文件?