Мне нужно обновить экран настроек после выполнения кода, который меняет одну из настроек. Я могу изменить настройки, но они не будут обновляться на дисплее, пока я не уйду и не вернусь.
@TargetApi(Build.VERSION_CODES.HONEYCOMB)
public static class GeneralPreferenceFragment extends PreferenceFragment {
@Override
public void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
addPreferencesFromResource(R.xml.pref_general);
setHasOptionsMenu(true);
final Preference btnLexicon = findPreference("lexicon");
btnLexicon.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
@Override
public boolean onPreferenceClick(Preference preference) {
selectLexicon();
return true;
}
});
btnLexicon.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() {
@Override
public boolean onPreferenceChange(Preference preference, Object newValue) {
preference.setSummary(newValue.toString());
return true;
}
});
bindPreferenceSummaryToValue(findPreference("lexicon"));
}
Внешний метод работает с диалоговым окном предупреждения и затем соответствующим образом обновляет настройку.
SharedPreferences settings = PreferenceManager.getDefaultSharedPreferences(getActivity());
SharedPreferences.Editor prefs = settings.edit();
prefs.putString("lexicon", LexData.getLexName());
prefs.apply();
Я пробовал предложение использовать
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
SharedPreferences prefs = PreferenceManager.getDefaultSharedPreferences(this);
prefs.registerOnSharedPreferenceChangeListener(this);
}
и
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
if ("lexicon".equals(key))
sharedPreferences.getString("lexicon", LexData.getLexName());
}