当用户通过PreferenceActivity
的子类更新共享首选项时,我会检查新值是否在给定时间有效。如果不是,则应在onSharedPreferenceChanged
方法中更改该值。
到目前为止这是有效的。我设置了OnSharedPreferenceChangedListener
,该方法被调用。用户设置值将被覆盖,新值将在应用程序中使用,但是当我再次打开此特定首选项值(在本例中为ListPreference
)时,将选择错误的列表项(用户选中,而不是监听器中设置的用户)。我尝试用两者覆盖该值:
mPrefs.edit().putString("answers", value.toString()).commit();
mPrefs.edit().putString("answers", value.toString()).apply();
我需要采取其他步骤来更新ListPreference
吗?重新启动PreferenceActivity
后,该值将正确显示。
答案 0 :(得分:1)
try to use Override method SharedPreferenceChanged
@Override
public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,
String key) {
if (key.equals(KEY)) {
Preference ServicePref = findPreference(key);
// Set summary to be the user-description for the selected value
SharedPreferences sharedPref = PreferenceManager.getDefaultSharedPreferences(this);
}
}
答案 1 :(得分:0)
我找到了一种解决此问题的方法,方法是手动设置值,如下所述:
http://liquidlabs.ca/2011/08/25/update-preference-value-without-reloading-preferenceactivity/