Machen wir das ganze kurz
Ich habe eine SettingsActivity geschrieben. Dort sollen nach und nach Einstellungen folgen welche in der App Globale Einwirkungen haben.
Als erste wäre es die Sprache der App zu ändern.
Das Menu ist erstellt und funktioniert einwandfrei. Jedoch weiß ich nicht wie ich nun die Sprache umändern kann sobald die Value geändert wurde.
Die Activity sieht bislang so aus:
Code
public class SettingsActivity extends PreferenceActivity {
public static final String KEY_PREF_LANGUAGE = "pref_language";
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
getFragmentManager().beginTransaction()
.replace(android.R.id.content,new SettingsFragment())
.commit();
}
public static class SettingsFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.app_settings);
bindPreferenceSummaryToValue(findPreference(KEY_PREF_LANGUAGE));
}
}
private static Preference.OnPreferenceChangeListener preferenceSummaryToValueListener = new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
String stringValue = newValue.toString();
if (preference instanceof ListPreference){
ListPreference listPreference = (ListPreference) preference;
int index = listPreference.findIndexOfValue(stringValue);
preference.setSummary(
index >= 0
? listPreference.getEntries()[index]
: null);
} else {
preference.setSummary(stringValue);
}
return true;
}
};
private static void bindPreferenceSummaryToValue(Preference preference) {
preference.setOnPreferenceChangeListener(preferenceSummaryToValueListener);
preferenceSummaryToValueListener.onPreferenceChange(preference,
PreferenceManager
.getDefaultSharedPreferences(preference.getContext())
.getString(preference.getKey(), ""));
}
}
Alles anzeigen
Ich freue mich auf eure Rückmeldung!
Beste Grüße
Felix
EDIT:
Die Values aus meiner ListPreference lauten de_DE und en_US
Somit müsste man doch nun irgendwie sich diesen Wert aus den SharedPreferences nehmen und der App sagen nimm den dortigen Wert als Locale..