2

When the language in ListPreference is changed, setLanguage() method from this answer in onSharedPreferenceChanged() method in my SettingsFragment class is called.

String defaultCode = getActivity().getString(R.string.string_english_code);
String langCode = sharedPreferences.getString(PREF_LANGUAGE, defaultCode);
setLanguage(getActivity(), langCode);
((SettingsActivity) getActivity()).restartFragment();

Changing a language works fine, but when setSummary() is called on the ListPreference object in onCreate() it changes only when the necessary language is chosen for the second time.

ListPreference langPreference = (ListPreference) findPreference(PREF_LANGUAGE);
langPreference.setSummary(langPreference.getEntry());

P.S. If setLanguage() is not called, summary updates as it should be.

1 Answers1

0

Instead of

langPreference.setSummary(langPreference.getEntry());

Try

langPreference.setSummary(PreferenceManager.getDefaultSharedPreferences(context).getString("key", "default value");

I use this code to update my Preference summaries, it works everytime.

Harsh Modani
  • 205
  • 1
  • 11