Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/227.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 如何获得有关CheckBoxPreference状态更改的通知?_Android_Checkbox_Sharedpreferences_Preferenceactivity - Fatal编程技术网

Android 如何获得有关CheckBoxPreference状态更改的通知?

Android 如何获得有关CheckBoxPreference状态更改的通知?,android,checkbox,sharedpreferences,preferenceactivity,Android,Checkbox,Sharedpreferences,Preferenceactivity,我需要动态设置/取消设置侦听器以响应用户设置更改 我见过的一种方法是使用并检查复选框的键 但不知怎么的,我觉得这是低效的。我想的更多的是在PreferenceActivity派生的类上设置某种侦听器。也许吧 你会推荐哪种方法?为什么 您能指出一个示例工作代码吗?以下是示例代码。使用XML文件,您可以设置单击小部件时要执行的方法。设置android:onClick=foo将在单击小部件时执行方法foo,向其传递参数View v,v作为单击的视图。您应该实现。然后设置侦听器以捕获关键更改: getP

我需要动态设置/取消设置侦听器以响应用户设置更改

我见过的一种方法是使用并检查复选框的键

但不知怎么的,我觉得这是低效的。我想的更多的是在
PreferenceActivity
派生的类上设置某种侦听器。也许吧

你会推荐哪种方法?为什么

您能指出一个示例工作代码吗?

以下是示例代码。使用XML文件,您可以设置单击小部件时要执行的方法。设置
android:onClick=foo
将在单击小部件时执行方法
foo
,向其传递参数
View v
v
作为单击的视图。

您应该实现。然后设置侦听器以捕获关键更改:

getPreferenceScreen().getSharedPreferences().registerOnSharedPreferenceChangeListener(this);
您应该能够检索已检查的更改:

public void onSharedPreferenceChanged(SharedPreferences sharedPreferences,String key) 
{

}

您的建议对于布局上下文中的
非常有用。我指的是PreferenceScreen上下文中的
。但我想我刚刚找到了这个:。事实上,即使是布局上下文,也不是首选项屏幕。好吧,很好,你找到了答案。我想我应该读得更深入一点。实际上我没有。我庆祝得太早了。你试过了吗?@slybloty请看下面我对@Yawus的评论。如何对
使用
setOnCheckedChangeListener()
?请注意与
+1的区别。你是说我在问题中提到的第一种方法是唯一的出路吗?还是最好的?不会割断它吗?它也可能有用。我不能给你一个确切的答案,因为我自己还没有试过。但是我建议实现listener.OK。我永远不知道onContentChanged()是否工作得更好,因为我刚刚实现了OnSharedPreferenceChangeListener(),它工作得很好。有一天,当我有更多的时间去试验和测试。。。