Android SharedReference更改侦听器和自定义首选项

Android SharedReference更改侦听器和自定义首选项,android,settings,listener,shared,preference,Android,Settings,Listener,Shared,Preference,我有以下偏好: <xml version="1.0" encoding="utf-8"?> <PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" > <CheckBoxPreference android:key="pk1" android:title="@string/pt1" android:summary="@string/pt1s"

我有以下偏好:

<xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >
<CheckBoxPreference
    android:key="pk1"
    android:title="@string/pt1"
    android:summary="@string/pt1s"
    android:defaultValue="false" />
<CheckBoxPreference
    android:key="pk2"
    android:title="@string/pt2"        
    android:defaultValue="false" />
<ListPreference 
    android:key="pk3"
    android:title="@string/pt3"
    android:dialogTitle="@string/pt3"
    android:entries="@array/fontsi"
    android:entryValues="@array/fontsiv"
    android:defaultValue="0" />     
<Preference
android:key="pkb"
android:title="@string/ptb" />
</PreferenceScreen>
监听器可以处理除e自定义首选项(最后一个,pkb作为键)以外的所有首选项! 我想用它作为后退按钮。
有人知道为什么吗?

显然你的偏好不会改变任何偏好

由于它不做任何事情,
OnSharedPreferenceChangeListener
会忽略它

一种可能的解决方案是如下设置
clickListener

findPreference("pkb").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
    @Override
    public boolean onPreferenceClick(Preference preference) {
        Log.i("SettingsActivity", "!pref PKB called!");
        return false;
    }
});
我想你是对的user324(我可以称你为user324吗?),OnPreferenceClickListener确实有效,它是旧代码。我不喜欢第二个听众的想法,但我想我必须。。。谢谢你,我想我会在两天内接受你的答复。
findPreference("pkb").setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
    @Override
    public boolean onPreferenceClick(Preference preference) {
        Log.i("SettingsActivity", "!pref PKB called!");
        return false;
    }
});