android - setOnPreferenceClickListener 函数不适用于 Android 上的 Preference

标签 android preferenceactivity

我正在使用下面的代码将文本打印到 logcat,但是 setOnPreferenceClickListener 函数没有捕捉到该事件。

我正在使用 Android API Level 8 来测试代码。

<PreferenceScreen xmlns:android="http://schemas.android.com/apk/res/android" >

    <CheckBoxPreference
        android:defaultValue="true"
        android:key="settings_use_cache"
        android:summary="Use cache"
        android:title="Use Cache" />

    <Preference
        android:defaultValue="true"
        android:key="settings_delete_cache"
        android:summary="Delete all cache data"
        android:title="Clear Cache" />

</PreferenceScreen>

这是代码

public static class CachePreferenceFragment extends
        PreferenceActivity {
    @Override
    public void onCreate(Bundle savedInstanceState) {

        Log.w("DBG", "Oncreate started");

        super.onCreate(savedInstanceState);
        addPreferencesFromResource(R.xml.pref_cache);

        Preference settings_delete_cache=findPreference("settings_delete_cache");
        settings_delete_cache.setOnPreferenceClickListener(new OnPreferenceClickListener() {

            @Override
            public boolean onPreferenceClick(Preference preference) {
                Log.w("Prefence", "Deleting Cache");
                return false;
            }
        });         
    }
}

我该怎么做才能确保监听器捕捉到事件?

最佳答案

编辑: 在线程外与该开发人员交谈后,发现问题在于他将听众置于 fragment 内部。所以这段代码确实有效,但它只会在您使用双面板布局时运行。事实上,这是在方法的正上方说明的:

    /**
     * This fragment shows notification preferences only. It is used when the
     * activity is showing a two-pane settings UI.
     */

    public static class CachePreferenceFragment extends
            PreferenceActivity {

解决方案是在 setupSimplePreferencesScreen() 中也设置 onPreferenceClick 监听器!

关于android - setOnPreferenceClickListener 函数不适用于 Android 上的 Preference,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17479144/

相关文章:

android - 如何更改切换按钮的颜色?

java - 从 res 文件夹中读取 csv 文件

java - 无法获取 SharedPreferences

android - 方法内 PendingIntent 语句中的 "AlarmReceiverChangeImage"错误消息

android - 如何确定单击自定义布局按钮中的哪个首选项

android - Chromecast 在播放视频时添加字幕

android - 创 build 备所有者 Android Lollipop 时校验和错误

android - 为什么我的 ListView 不滚动?

Android 首选项上下列表对话框

关于 PreferenceActivity 的 Android 弃用方法警告