【问题标题】:How to get id of a string array in string.xml if you have the array name如果您有数组名称,如何在 string.xml 中获取字符串数组的 ID
【发布时间】:2014-02-17 12:54:03
【问题描述】:

我有一种简单的方法来使用它的字符串名称获取在 string.xml 中定义的字符串数组的 id? 我有一个字符串数组的字符串名称,我需要一种方法来引用该数组。下面只是一个示例 xml。

<string-array name="categories_array">
    <item>Clothes</item>
    <item>Electronics</item>
    <item>Gifts</item>
    <item>Food</item>
</string-array>
<string-array name="clothes">
    <item>Clothes</item>
    <item>Electronics</item>
    <item>Gifts</item>
    <item>Food</item>
    <item>Books</item>
    <item>Music</item>
    <item>Bags</item>
</string-array>
<string-array name="electronics">
    <item>Clothes</item>
    <item>Electronics</item>
    <item>Gifts</item>
    <item>Food</item>
    <item>Books</item>
    <item>Music</item>
    <item>Bags</item>
</string-array>
<string-array name="gifts">
    <item>Clothes</item>
    <item>Electronics</item>
    <item>Gifts</item>
    <item>Food</item>
    <item>Books</item>
    <item>Music</item>
    <item>Bags</item>
</string-array>
<string-array name="food">
    <item>Clothes</item>
    <item>Electronics</item>
    <item>Gifts</item>
    <item>Food</item>
    <item>Books</item>
    <item>Music</item>
    <item>Bags</item>
</string-array>

现在,如果我有数组名称 "clothes" ,我将如何获得它的 id?

【问题讨论】:

  • 你能用一个例子更好地描述一下吗?

标签: android xml


【解决方案1】:

你可以在下面使用:

int resId = getResources().getIdentifier("nameOfStringResource", "array", getPackageName());

例如:

int resId = getResources().getIdentifier("categories_array", "array", getPackageName());

See docs.

【讨论】:

    【解决方案2】:

    这可以使用反射来完成:

    String name = "your_array";
    final Field field = R.array.getField(name);
    int id = field.getInt(null);
    String[] strings = getResources().getStringArray(id);
    

    或者使用Resources.getIdentifier():

    String name = "your_array";
    int id = getResources().getIdentifier(name, "array", getPackageName());
    String[] strings = getResources().getStringArray(id);
    

    【讨论】:

      【解决方案3】:

      试试R.array.yourarray 希望对您有所帮助。

      【讨论】:

        【解决方案4】:

        你可以使用

        getResources().getString(R.string.your_string)
        

        获取String

        getResources().getStringArray(R.array.your_string)
        

        获取String array

        【讨论】:

          【解决方案5】:

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

          【讨论】:

            猜你喜欢
            • 1970-01-01
            • 1970-01-01
            • 2019-03-18
            • 2020-09-19
            • 1970-01-01
            • 1970-01-01
            • 2022-11-28
            • 2011-10-01
            • 2011-11-05
            相关资源
            最近更新 更多