迭代存储在strings.xml

时间:2017-10-08 21:37:59

标签: java android arrays string

以下是我的strings.xml

的示例
<string name="intro_text_0">Hello </string>
<string name="intro_text_1">World </string>
<string name="intro_text_2">! </string>
.....

我有一个EditText字段,我想在用户按下按钮时连续显示这些字符串。我想要做的是在数组中获取这些字符串,并在用户单击按钮时通过它们进行处理。首先,我需要实际找到我需要显示的字符串......

private String introTextToShow [] = new String[textLength];

for (int i=0; i<textLength; i++)
        {
            // ADD the intro_string_i to the array!
            introTextToShow[i] = getString(R.string."intro_text_i"); // Oops
        }

我的第一个是使用toString()将i附加到文本的其余部分,但这并不起作用。如何在不R.string.intro_text_0

中直接输入名称的情况下迭代字符串

1 个答案:

答案 0 :(得分:1)

我的第一个建议是你使用s tring array resource而不是单个字符串资源的集合:

<string-array name="intro_text">
    <item>Hello </item>
    <item>World </item>
    <item>! </item>
</string-array>

并在代码中:

private String introTextToShow [];

public void onCreate(@Nullable Bundle savedInstanceState) {
    introTextToShow = getResources().getStringArray(R.array.intro_text);
}

如果由于其他原因需要将介绍文本数组保留为单独的字符串资源,可以按如下方式在循环中检索它们:

Resources res = getResources();
String pkg = getPackageName();
for (int i=0; i<textLength; i++) {
    int resId = res.getIdentifier("intro_text_" + i, "string", pkg);
    introTextToShow[i] = res.getString(resId);
}