android - 自定义 DialogPreference 不会触发 PreferenceActivity 中的 OnPreferenceChanged

标签 android android-preferences

当对话框关闭时,从 PreferenceActivity 调用的自定义 DialogPreference 不会调用 OnPreferenceChange()。

我认为 persistXXXX() 是触发器:

@Override
protected void onDialogClosed(boolean positiveResult) {
    super.onDialogClosed(positiveResult);
    if(positiveResult) {
        persistString(s);
    }
}

但是 onPreferenceChanged() 没有被调用。

所有其他标准首选项类型都有效(例如 EditTextPreference、ListPreference 等)。

所以问题是:是什么触发了这种首选项类型的 OnPreferenceChange()?

最佳答案

protected void onCreate(Bundle savedInstanceState) {
        // TODO Auto-generated method stub
        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.settings);
        SharedPreferences sp = PreferenceManager
                .getDefaultSharedPreferences(this);
        sp.registerOnSharedPreferenceChangeListener(this);
    }

我认为,您缺少 registerOnSharedPreferenceChangeListener

关于android - 自定义 DialogPreference 不会触发 PreferenceActivity 中的 OnPreferenceChanged,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14246153/

相关文章:

java - Android : Simple HTTPS request and get response

android - 设置功能的时间限制然后强制应用内购买android

android - java.lang.ClassCastException :fragment cannot be cast to android. 支持.v4.app.Fragment

java - 从 Google 云端硬盘获取可流式链接 [代码已准备就绪,访问被拒绝]

android - 我的公共(public)变量对其堂兄是不可见的

android - 将复杂结构保存到共享首选项

android - 在三星 Galaxy S 上调用 RingTonePreference 时出现 NullPointerException

android - SpannableGridView 改变布局问题

Android:强制显示 fragment 的滚动条

android - 自定义内联 SeekBarPreference - 如何在第一次运行时设置 SeekBar 进度?