获取Android中strings.xml文件中的字符串列表

Bri*_*ani 10 android

我想要strings.xml文件中的字符串列表.

有谁知道如何得到它??? 我发现的一件事是它在R.java中按顺序分配id但是如何获得起始id并不清楚.

例如,我在strings.xml中有100个字符串,如下所示,我想一次读入,而不是为个人提供getResources().getString(int id).

<string name="app_label">Calendar</string>
<string name="what_label">What</string>
<string name="where_label">Where</string>
<string name="when_label">When</string>
<string name="timezone_label">Time zone</string>
<string name="attendees_label">Guests</string>
<string name="today">Today</string>
<string name="tomorrow">Tomorrow</string>
Run Code Online (Sandbox Code Playgroud)

Kan*_*nth 12

您可以像这样在res\values\strings.xml文件中声明字符串.

 <string-array name="vehiclescategory_array">

        <item>Cars</item>
        <item>Bikes</item>
        <item>RVs</item>
        <item>Trucks</item>
        <item>Other Vehicles</item>

 </string-array>
Run Code Online (Sandbox Code Playgroud)

在您的活动类中,您可以像下面这样访问它们.

String[] categories;

categories=getResources().getStringArray(R.array.vehiclescategory_array);
Run Code Online (Sandbox Code Playgroud)

在上面的列表中,无论您声明的顺序如何,都与在活动中分配给数组的方式相同.假设汽车将被分配到类别[0].希望这可以帮助.


Luk*_*rog 7

如果要从strings.xml文件中访问所有字符串,可以在R.string类上使用反射.在这个答案中可以找到一个例子,你只需要用字符串替换drawables.


小智 7

Field[] fields = R.string.class.getDeclaredFields(); // or Field[] fields = R.string.class.getFields();
String str = "";
for (int  i =0; i < fields.length; i++) {
    int resId = getResources().getIdentifier(fields[i].getName(), "string", getPackageName());
    str += fields[i].getName() + " = ";
    if (resId != 0) {
        str += getResources().getString(resId);
    }
    str += "\n";
}
Run Code Online (Sandbox Code Playgroud)

您将获得所有字符串代码及其值在"str"变量中.