我正在尝试学习如何为 Android 制作动态壁纸。我已经让它工作了,现在我想添加一些首选项。因此,我创建了一个偏好活动并遵循我能找到的所有示例。

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

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

我已经为这个问题绞尽脑汁两天了,任何帮助将不胜感激!

谢谢!

有帮助吗?

解决方案

@Josh - 很好的答案。

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

答案是 这个问题 有一个很好的代码示例,取自现有的 Android 示例程序。

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

其他提示

你已经注册接收onSharedPreferenceChanged回调?

添加到您的主要活动的onCreate方法(并确保落实onSharedPreferenceChanged):

PreferenceManager.getDefaultSharedPreferences(getBaseContext()).registerOnSharedPreferenceChangeListener(this);
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top