如何从android:tag中读取@array?

时间:2012-03-06 12:52:09

标签: android arrays string reference tags

我在tag属性中引用了一个字符串数组。如何阅读它才能获得阵列?

我的标签属性布局:

<Button android:id="@+id/btn" ... android:tag="@array/colors" />

我的arrays.xml:

<string-array name="colors">
    <item>red</item>
    <item>yellow</item>
    <item>green</item>
</string-array>

这样我获取标签(不幸的是作为对象):

Button btn = (Button) findViewById(R.id.btn);
Object tag = btn.getTag();
Log.d("COLORS", "tag: " + tag.toString());

日志输出为:

03-06 13:34:12.765: DEBUG/COLORS(2957): tag: @2131099648

当我仔细研究我的R.java时:

public static final int colors=0x7f060000;

这个十六进制值恰好是:

2131099648

所以必须以某种方式获取此Object并将ressource标识符作为int。

而不是

String[] colors = getResources().getStringArray(R.array.colors);

我想做这样的事情:

String[] colors = getResources().getStringArray((int)tag);

感谢您帮助我,

1 个答案:

答案 0 :(得分:1)

colors.xml文件夹中使用res/values,然后您可以使用:

<resources>
    <color name="solid_red">#f00</color>
    <color name="solid_blue">#0000ff</color>
    <color name="solid_green">#f0f0</color>
    <color name="solid_yellow">#ffffff00</color>
</resources>

然后你可以使用这样的东西:

<Button android:id="@+id/btn" ... android:tag="@color/solid_red" />