Android:通过侦听器更新sharedPreferences摘要

Mic*_*311 1 android summary sharedpreferences

随着首选项的更改,我在更新SharedPreferences中的摘要行时遇到了一些问题.我在onResume()中有一个注册的OnSharePreferenceChangeListener,在onPause()中有一个注册的OnSharePreferenceChangeListener.

监听器正在运行,我可以使用onSharedPreferenceChanges()方法.我遇到的问题是能够在那里检索首选项,以便我可以调用setSummary().我在冰淇淋三明治中,似乎不推荐使用findPreference(key)方法.所以:

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Preference pref = findPreference(key);}
Run Code Online (Sandbox Code Playgroud)

不起作用,实际上为pref返回null.从我看到的例子中,你需要优先调用它上面的setSummary()和想法?

neb*_*kat 5

你不应该使用onSharedPreferenceChangedListener这个.

相反,使用类似的东西.

ListPreference myPreference = (ListPreference) findPreference("preference_key");
myPreference.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
    @Override
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        if (((String)newValue).equals("some_value")) {
            preference.setSummary("my summary");
        }
    }
});
Run Code Online (Sandbox Code Playgroud)

findPreference不推荐使用,而是不应该使用PreferenceActivity(不推荐使用).如果您只需要支持Android 3.0+,那么您应该切换到PreferenceFragment新的方法.如果您需要支持Android 2.1+,那么它很好,您可以忽略警告.