我正在尝试学习如何为 android 制作动态壁纸。我已经让它工作了,现在我想添加一些偏好。所以,我创建了一个偏好活动,并按照我能找到的所有示例进行操作。
我可以很好地捕获 ListBoxPreferences,但是当复选框被更改时,永远不会调用“onSharedPreferenceChanged”方法。
是否需要添加额外的代码来捕获复选框更改?是否有在首选项中进行复选框的最佳实践方式?
两天来我一直在努力解决这个问题,任何帮助将不胜感激!
谢谢!
我正在尝试学习如何为 android 制作动态壁纸。我已经让它工作了,现在我想添加一些偏好。所以,我创建了一个偏好活动,并按照我能找到的所有示例进行操作。
我可以很好地捕获 ListBoxPreferences,但是当复选框被更改时,永远不会调用“onSharedPreferenceChanged”方法。
是否需要添加额外的代码来捕获复选框更改?是否有在首选项中进行复选框的最佳实践方式?
两天来我一直在努力解决这个问题,任何帮助将不胜感激!
谢谢!
您是否注册接收 onSharedPreferenceChanged 回调?
将此添加到您的主要活动的 onCreate 方法(并确保实现 onSharedPreferenceChanged):
PreferenceManager.getDefaultSharedPreferences(getBaseContext()).registerOnSharedPreferenceChangeListener(this);
@Josh - 好答案。
为了完整起见,我想补充一点,您应该进行设置,以便在 PreferenceActivity 的 onResume() 方法中注册更改并在 onPause() 方法中取消注册。
这个问题的答案有一个很好的代码示例,取自库存的 Android 示例程序。
或者,您还可以在活动的 onCreate() 中为每个首选项注册侦听器,并分别处理它们上的事件。