2017-02-17 20 views
1

I extendsPreferenceFragmentonCreate方法に、このようなコードを追加します。ListPreferenceと翻訳

final ListPreference pref = (ListPreference) findPreference(PREF_NAME); 
String[] array={getString(R.string.variant1), getString(R.string.variant2)}; 
CharSequence[] entries = array; 
CharSequence[] entryValues = array; 
pref.setEntries(entries); 
pref.setDefaultValue(getString(R.string.variant1)); 
pref.setEntryValues(entryValues); 

は、2つのバリエーションを持っている(彼らはON/OFFスイッチされていないので、私はListPreferenceを使用)。

だから私の質問:あなたは私は、ユーザーの言語に依存しないことをキーでストアの値が欲しいSharedPreferencesに別の手からgetString、 を使用見ることができるように、私は、ユーザーインターフェース、適切な翻訳に表示する一方で、どのように私はこれを達成することはできますか?

答えて

1

EntryValues配列は、項目の配列内の項目のキーとして使用されるため、2つの配列は同じサイズである必要があります。 entries配列からのユーザ値は表示されます(変換が必要なので)。しかし、共有の設定では、entryValues配列から選択された値が保存されるため、ローカライズしないでください。

あなたはこのようなものに変更することができ、あなたのコードで

final ListPreference pref = (ListPreference) findPreference(PREF_NAME); 
    CharSequence[] entries = new String[]{getString(R.string.variant1), getString(R.string.variant2)}; 
    CharSequence[] entryValues = {"variant1", "variant2"}; 
    pref.setEntries(entries); 
    pref.setDefaultValue("variant1"); 
    pref.setEntryValues(entryValues);