【问题标题】:Android how can i get the image button's id programmatically?Android如何以编程方式获取图像按钮的ID?
【发布时间】:2013-05-01 04:05:35
【问题描述】:

我创建了图像按钮,并使用以下代码以编程方式设置了该图像:

myButton1[0][0].setImageResource(R.drawable.mayin2);

我想从其他方法获取该图像的 ID 或名称。如何调用图像按钮的图像 ID 或名称?

【问题讨论】:

    标签: java android imagebutton android-button


    【解决方案1】:

    您不能直接这样做,它只是对可检索的可绘制资源的引用,但不保留整数值。您可以做的一件事是将引用作为标签存储在视图上:

    myButton1[0][0].setImageResource(R.drawable.mayin2);
    myButton1[0][0].setTag(R.drawable.mayin2);
    

    然后您可以使用以下方法检索它:

    Integer resourceID = (Integer) myButton1[0][0].getTag("resource_id");
    

    编辑:或者,如果您需要存储多个标签,请在 values 文件夹中定义一个 ID(创建一些 XML 文件,可能是 ids.xml),如下所示:

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

    然后用那个ID设置一个标签:

    myButton1[0][0].setImageResource(R.drawable.mayin2);
    myButton1[0][0].setTag(R.id.resource, R.drawable.mayin2);
    

    然后通过相同的 ID 检索:

    Integer resourceID = (Integer) myButton1[0][0].getTag(R.id.resource);
    

    【讨论】:

    • 谢谢,我知道我可以这样做,但我已经将 setTag 方法用于另一件事,所以我不能使用 setTag。还有其他可能的方法吗?
    • 我可以使用 myButton1[0][0].setTag(123, R.drawable.mayin2);和整数 resourceID = (Integer) myButton1[0][0].getTag(123);而不是创建一个新的 xml 文件?
    • 是的,但不能保证是唯一的。在实践中,我认为你这样做不会有问题。
    • 我创建了 ids.xml 文件但是编译器给出了错误;错误:不允许使用字符串类型(在“资源”处,值为“”)。而且我还尝试提供一个随机 id 而不是创建 xml 文件,然后编译器也给出了错误。 05-01 04:47:28.962: E/AndroidRuntime(2201): Caused by: java.lang.IllegalArgumentException: key must be an application-specific resource id.
    • 对不起,这是我的错误。我已经编辑了我的答案,只需取出 format="integer" 属性。是的,显然 需要在 XML 中定义一个 ID。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-01-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多