0

当用户通过PreferenceActivityI 的子类更新共享偏好时,检查新值在给定时间是否有效。如果不是,则应在onSharedPreferenceChanged方法中将值改回。

到目前为止,这有效。我设置了一个OnSharedPreferenceChangedListener,该方法被调用。用户设置的值将被覆盖,新值将在应用程序中使用,但是当我再次打开此特定首选项值(在本例中为 a ListPreference)时,将选择错误的列表项(用户选择的项,而不是一组在侦听器中)。我尝试用两者覆盖值:

mPrefs.edit().putString("answers", value.toString()).commit();
mPrefs.edit().putString("answers", value.toString()).apply();

我需要采取其他步骤来更新ListPreference? 重新启动后,PreferenceActivity该值将正确显示。

4

2 回答 2

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);                 

            }           
    }
于 2013-08-21T12:06:32.570 回答
0

我找到了一种通过手动设置值来解决此问题的方法,如下所述:

http://liquidlabs.ca/2011/08/25/update-preference-value-without-reloading-preferenceactivity/

于 2013-08-21T13:15:53.087 回答