Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/304.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 迭代存储在strings.xml中的字符串_Java_Android_Arrays_String - Fatal编程技术网

Java 迭代存储在strings.xml中的字符串

Java 迭代存储在strings.xml中的字符串,java,android,arrays,string,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> ..... 我的第一个想法是使用toString()在文本的其余部分附加i,但这不起作用。如何在不直接在R.string.intr

下面是我的
strings.xml
示例:

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

我的第一个想法是使用toString()在文本的其余部分附加
i
,但这不起作用。如何在不直接在
R.string.intro\u text\u 0
中输入名称的情况下遍历字符串?

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

<string-array name="intro_text">
    <item>Hello </item>
    <item>World </item>
    <item>! </item>
</string-array>
如果出于其他原因需要将简介文本数组保留为单个字符串资源,则可以在循环中检索它们,如下所示:

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);
}
Resources res=getResources();
字符串pkg=getPackageName();

对于(int i=0;i)您为什么不使用
资源而不是一堆单独的
资源?我不知道您也可以在XML中存储字符串数组。谢谢。
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);
}