【问题标题】:Iterate over strings stored in strings.xml迭代存储在 strings.xml 中的字符串
【发布时间】:2017-10-08 21:37:59
【问题描述】:

这是我的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 中输入名称的情况下遍历字符串?

【问题讨论】:

标签: java android arrays string


【解决方案1】:

我的第一个建议是您使用 string 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);
}

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-07-15
    • 2015-09-23
    • 1970-01-01
    • 2015-06-15
    相关资源
    最近更新 更多