2017-02-17 2 views
1

I extendsPreferenceFragment und solchen Code zu onCreate Methode hinzufügen:ListPreference und Übersetzung

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); 

zwei Varianten zu haben (sie sind nicht ein-/ausschalten, so dass ich ListPreference).

Also meine Frage: aus einer Hand, die ich in der Benutzeroberfläche geeignete Übersetzung sehen wollen, so wie du, ich getString verwendet sehen können, von einer anderen Hand in SharedPreferences I Speicherwert mit Schlüssel möchten, dass nicht auf Benutzersprache abhängen, wie kann ich das erreichen?

Antwort

1

Das EntryValues-Array wird als Schlüssel für Elemente im Array von Einträgen verwendet, daher sollten diese beiden Arrays die gleiche Größe haben. Für den Benutzer werden Werte aus dem array arrays angezeigt (also müssen sie übersetzt werden), aber in den gemeinsamen Einstellungen wird der ausgewählte Wert aus dem array "entryValues" gespeichert (sie sollten also nicht lokalisiert sein).

In Ihrem Code können Sie es so etwas wie dies ändern:

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);