13

strings.xml ファイルに存在する文字列のリストが必要です。

入手方法わかる人いますか???私が見つけた 1 つのことは、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>
4

5 に答える 5

13

次のように 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>

アクティビティ クラスでは、次のようにアクセスできます。

String[] categories;

categories=getResources().getStringArray(R.array.vehiclescategory_array);

上記のリストでは、どのようなシーケンスを宣言しても、同じ方法でアクティビティの配列に割り当てられます。車がカテゴリ [0] に割り当てられるとします。お役に立てれば。

于 2012-12-22T07:18:50.730 に答える
10
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";
}

「str」変数の値を持つ文字列のすべてのコードを取得します。

于 2014-08-24T09:08:22.307 に答える
7

ファイルからすべての文字列にアクセスしたい場合は、クラスstrings.xmlでリフレクションを使用できます。R.string例はこの回答にあります。ドローアブルを文字列に置き換えるだけです。

于 2012-12-22T08:23:12.867 に答える
3

各文字列のエントリを持つ整数配列を宣言できます。色の配列に対してこれを一度行ったので、文字列に対しても機能すると思います。

res/values/arrays.xml

<integer-array name="app_strings">
    <item>@string/app_label</item>
    <item>@string/what_label</item>
    <item>@string/where_label</item>
    <item>@string/when_label</item>
    <item>@string/timezone_label</item>
    <item>@string/attendees_label</item>
    <item>@string/today</item>
    <item>@string/tomorrow</item>
</integer-array>

次に、コードで配列をループし、各値を getString() の引数として使用します。

int[] stringIds = getResources().getIntArray(R.array.app_strings);
String[] strings = new String[stringIds.length];
for (int i = 0; i < stringIds.length; i++) {
    strings[i] = getString(stringIds[i]);
}

問題は、文字列リソースを変更するたびに arrays.xml を手動で更新する必要があることです。したがって、これは理想的ではありません。

于 2012-12-22T08:12:53.353 に答える