Как читать @array с тега android: - PullRequest
1 голос
/ 06 марта 2012

У меня есть ссылка на строковый массив внутри атрибута тега. Как я могу прочитать его, чтобы получить в руки массив?

Мой макет с атрибутом тега:

<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

Так что каким-то образом должен быть способ получить этот Объект и получить идентификатор ресурса как int.

вместо

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

Я хочу сделать что-то вроде этого:

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

Спасибо за помощь в этом,

Marco

1 Ответ

1 голос
/ 06 марта 2012

Используйте 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" />
...