如何在android开发中捕获CheckBoxPreference的更改?

时间:2010-11-23 20:57:30

标签: android preferences sharedpreferences

我正在努力学习如何为Android做动态壁纸。我已经有了它的工作,现在我想添加一些偏好。所以,我创建了一个偏好活动,并按照我能找到的所有示例进行了操作。

我可以很好地捕获ListBoxPreferences,但是当复选框被更改时,永远不会调用'onSharedPreferenceChanged'方法。

是否需要添加额外的代码来捕获复选框更改?是否有在偏好中执行复选框的最佳实践方法?

我已经对这个问题猛烈抨击了两天,任何帮助都会非常感激!

谢谢!

2 个答案:

答案 0 :(得分:0)

您是否已注册接收onSharedPreferenceChanged回调?

将此添加到主活动的onCreate方法(并确保实现onSharedPreferenceChanged):

PreferenceManager.getDefaultSharedPreferences(getBaseContext()).registerOnSharedPreferenceChangeListener(this);

答案 1 :(得分:0)

@Josh - 很好的答案。

为了完整起见,我想补充一点,你应该进行设置,以便在PreferenceActivity的onResume()方法中注册更改并在onPause()方法中取消注册。

this question的答案有很多来自Android示例程序的代码示例。

或者,您也可以为活动的onCreate()中的每个首选项注册侦听器,并分别处理它们上的事件。