不会显示以编程方式更新列表首选项

时间:2013-08-21 11:56:57

标签: android sharedpreferences

当用户通过PreferenceActivity的子类更新共享首选项时,我会检查新值是否在给定时间有效。如果不是,则应在onSharedPreferenceChanged方法中更改该值。

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

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

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

2 个答案:

答案 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/