63

プリファレンスアクティビティを作成するときは、xmlファイルですべてのプリファレンスを定義します。すべての設定には、このxmlで定義されたキーがあります。しかし、設定にアクセスするときは、次のように記述します。

SharedPreferences appPreferences = PreferenceManager.getDefaultSharedPreferences(this);
boolean foo_value = appPreferences.getBoolean("foo_key_defined_in_xml", false);

ハードコードされた方法で「foo_key_defined_in_xml」を参照することを回避する方法はありますか?たぶん、Rスタイルの方法でそれを参照する可能性があります(文字列を参照しないでください)?

4

7 に答える 7

75

キーをstrings.xmlに保存し、他のすべての値と同様にpreferences.xmlから参照できることがわかりましたandroid:key="@string/preference_enable"

コードでは、次のように入力してキーを参照できます getString(R.string.preference_enable)

タグを使用して、文字列を翻訳しないようにマークできます<xliff:g>ローカリゼーション チェックリストを参照してください

<string name="preference_enable"><xliff:g id="preference_key">enable</xliff:g></string>
于 2010-05-19T09:10:50.090 に答える
1

ヘルパークラスを使用してgetString()を非表示にするのはどうですか?各アクティビティまたはサービスでヘルパーを1回インスタンス化します。例えば:

class Pref {

    final String smsEnable_pref;
    final String interval_pref;
    final String sendTo_pref;
    final String customTemplate_pref;
    final String webUrl_pref;

    Pref(Resources res) {       
         smsEnable_pref = res.getString(R.string.smsEnable_pref);
         interval_pref = res.getString(R.string.interval_pref);
         sendTo_pref = res.getString(R.string.sendTo_pref);
         customTemplate_pref = res.getString(R.string.customTemplate_pref);
         webUrl_pref = res.getString(R.string.webUrl_pref);
    }
}
于 2011-02-09T10:38:55.753 に答える
1

試してみてくださいgetString(R.string.key_defined_in_xml)

于 2010-05-18T12:37:03.483 に答える
1

私が知る限り、環境設定キーを参照するより良い方法はありません (静的な最終文字列を使用してクラスに文字列を格納することを除けば)。

SDK docs で指定された例は、例で指定したものと同じです

于 2010-05-18T12:33:44.650 に答える