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

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

侦听器正在运行,并且我可以使用onSharedPreferenceChanges()方法。我遇到的问题是能够在那里检索首选项,以便我可以调用setSummary()。我在Ice Cream Sandwich中,似乎好像不推荐使用findPreference(key)方法。所以:

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences, String key) {
Preference pref = findPreference(key);}


无法正常运行,并且实际上为pref返回null。从我所看到的示例中,您需要获得一个喜好来对其调用setSummary(),并且有什么想法?

最佳答案

您不应为此使用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");
        }
    }
});


findPreference没有被弃用,但是您不应该使用PreferenceActivity(已弃用)。如果仅需要支持Android 3.0+,则应切换到新方法PreferenceFragment。如果您需要支持Android 2.1+,那就很好了,您可以忽略警告。

本文翻译自 https://stackoverflow.com/questions/11639456/

网站遵循 CC BY-SA 4.0 协议,转载或引用请注明出处。

标签 android sharedpreferences summary


相关文章:

java - Android / Java-使用SharedPreferences进行,编辑和添加到数字值

android - 除了使用EditTextPreference以外,其他任何方法更改首选项后都不会调用OnSharedPreferencesChanged

java - 在Android中使用共享首选项尝试保存字符串,但在空对象上将错误作为空点异常

python - 根据自定义函数汇总数据框中的多个列

android - 在Google地图叠加层中为Geopoint提供双倍价值

android - 当我的手机屏幕在android系统中关闭时,无法检测到震动事件

c# - 如何在C#摘要中包含html标记,以便将其作为文本(而不是解析为XML)进行处理?

android - 更改偏好'摘要

android - FFmpeg-最终编译。怎么办?

android - 电子邮件没有出去和短信给404的链接