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

原文 标签 android sharedpreferences summary

随着首选项的更改,我在更新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+,那就很好了,您可以忽略警告。

相关文章:

当我不运行android studio时,我可以删除这些构建文件夹吗?

android - 在一台设备上安装多个apks尝试替换以前的应用程序

android - 如何从这个ANR日志中获得有用的东西

java - SharedPreferences是否覆盖其他值?

sql - 根据SQL Server中的配置表生成摘要数据

text - TensorFlow:tf.summary.text和换行符

python - 引用分组结果的汇总列

android - Android:使用Context.startService和PendingIntent.getService启动服务

android - 如何在Android的Here Maps上显示我的位置按钮

java - android上下文和sharedpreferences