3

とにかくstrings.xmlファイルをループする方法があるかどうか疑問に思っていました。

次の形式があるとしましょう。

<!-- FIRST SECTION -->
<string name="change_password">Change Password</string>
<string name="change_server">Change URL</string>
<string name="default_password">password</string>
<string name="default_server">http://xxx:8080</string>
<string name="default_username">testPhoneAccount</string>

<!-- SECOND SECTION -->
<string name="debug_settings_category">Debug Settings</string>
<string name="reload_data_every_startup_pref">reload_data_every_startup</string>
<string name="reload_data_on_first_startup_pref">reload_data_on_first_startup</string>

今、私がこれを持っているとしましょう:

private HashMap<String,Integer> hashmapStringValues = new HashMap<String, Integer>();

私のxmlファイルの2番目のセクションでのみ反復する方法はありますか? たぶん、セクションを次のようなタグでラップして<section2>から、それを繰り返しますか?

public void initHashMap(){
    for (int i=0;i< ???? ;i++) //Here I need to loop only in the second section of my xml file
    {          
        String nameOfTag = ? // Here I get the name of the tag
        int value = R.string.nameOfTag // Here I get the associated value of the tag

        this.hashmapStringValues.put(nameOfTag,value);
    }
}
4

4 に答える 4

6

いいえ、ただし、これを含む別の xml ファイルを resources/values に作成できます。

<?xml version="1.0" encoding="utf-8"?>
<resources>

    <string-array name="array">
        <item>ID_1|Asdf</item>
        <item>ID_2|I do not like to think</item>
        <item>ID_3|Whatever</item>
    </string-array>

</resources>

好きなように文字列をフォーマットしてから、カスタム パーサーで解析できます。

文字列配列を取得するには、これを行うだけです。

getResources().getStringArray(R.array.array);
于 2012-08-30T09:36:24.237 に答える
5

生成された android.R Java ファイルの中を見ると、リフレクションを介してこれを達成する方法が分かります。

    Field fields[] = R.string.class.getFields();
    for (Field field : fields) {
        Log.d("appname", field.getName() + ":" + getResources().getIdentifier(field.getName(), "string", this.getPackageName()));
    }

注意してください、私はこれを頻繁に行うことはありませんが、アプリのロードのために一度は問題ないはずです.

于 2013-09-25T16:35:44.547 に答える
0

基本的なJava自体がコメントを検出しないため、これは不可能です

このように文字列のみを選択できます。

getResources().getString(R.string.app_name)
于 2012-08-30T09:03:00.863 に答える