【发布时间】:2019-01-06 22:51:28
【问题描述】:
在执行更改其中一项设置的代码后,我需要更新设置显示。我可以更改首选项,但在我离开和回来之前它不会在显示中更新。
@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());
}
【问题讨论】: