未检测到首选项 onClick

Preference onClick Not Detected

我已经为首选项设置了一个 onpreference 点击侦听器,但即使通过查找首选项命令找到首选项,它也无法触发。

Activity

public class PreferenceActivity extends AppCompatActivity {

    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        // Display the fragment as the main content
        setContentView(R.layout.activity_preference);
        if (savedInstanceState == null) {
            getFragmentManager().beginTransaction()
                    .replace(R.id.settings, new SettingsFragment())
                    .commit();
        }
    }

    public static class SettingsFragment extends PreferenceFragment implements SharedPreferences.OnSharedPreferenceChangeListener {

        Context context;
        private final String DOB = "date";
        private SharedPreferences prefs;

        @Override
        public void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            addPreferencesFromResource(R.xml.preferences);

            context = getActivity().getApplicationContext();

            Preference dob = findPreference(DOB);
            Log.i("test", dob.getKey() + "");

            dob.setOnPreferenceClickListener(new Preference.OnPreferenceClickListener() {
                @Override
                public boolean onPreferenceClick(Preference preference) {
                    Log.i("test", "2");
                    return false;
                }
            });


        }

        @Override
        public void onPause() {
            super.onPause();
            getPreferenceScreen().getSharedPreferences().unregisterOnSharedPreferenceChangeListener(this);
        }

        @Override
        public void onResume() {
            super.onResume();
            getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
        }
    }
}

偏好xml

    <?xml version="1.0" encoding="utf-8"?>
<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android">

    <PreferenceCategory android:title="My Account">

        <EditTextPreference
            android:key="profile_name"
            android:summary="Taylor Swift"
            android:title="Username" />

        <Preference
            android:key="date"
            android:summary="N.A."
            android:title="@string/date" />

    </PreferenceCategory>

</PreferenceScreen>

"test" 的日志输出正确显示首选项的键,但 onclick 中的日志从不触发。

我用你的代码创建了一个简单的项目,一切似乎都运行良好。

Log.i("test", "2");

在我单击 "Date" 字段时被调用。