2

PreferenceActivity用来设置我拥有的另一个偏好BroadcastReciever

虽然使用 XML 文件制作首选项 GUI 的骨架非常简单,但我无法找到我的手脚来了解如何使用这些首选项实际做某事。尤其:

  1. 我如何注册BroadcastReciever以听取我的偏好变化?看起来广播接收器的上下文与活动不同,所以我没有注册到正确的位置SharedPreferences,因为我没有拦截这些更改。

  2. PreferenceActivity当偏好发生变化时,我该如何行动?我想我不需要注册PreferenceActivity为偏好的侦听器,所以必须有更简单的方法。

  3. 我如何更改PreferenceActivity适当的 UI 以适应偏好的变化?例如,将首选项的“摘要”属性设置为用户选择的值?

  4. 如何启用或禁用某些取决于其他偏好的偏好(如CheckBoxPreference)?所以用户只有在他首先启用该功能时才能编辑这些首选项。

我查看了文档,但PreferenceActivity除了从 XML 添加首选项之外,没有其他使用示例。

我觉得我在这里错过了一些巨大的东西,因为它看起来很简单,但我无法弄清楚......

请尝试回答我的任何问题。

顺便说一句:我正在为 Android 1.6 开发,所以所有新的PreferenceFragment都不能使用。

4

1 回答 1

1

如何注册我的 BroadcastReciever 以收听我的偏好变化?

如果BroadcastReceiver已在清单中注册,则您不会听到偏好的更改,因为BroadcastReceiver只会出现几毫秒。只需阅读 during 中的最新值onReceive()

如果BroadcastReceiver被其他组件调用注册,则该组件可以使用检索到的registerReceiver()注册 an和。OnSharedPreferenceChangeListenerSharedPreferencesPreferenceManagergetDefaultSharedPreferences()

看起来广播接收器的上下文与活动不同,所以我没有注册到正确的 SharedPreferences 因为我不拦截这些更改。

那句话毫无意义。

当偏好发生变化时,我如何在我的 PreferenceActivity 中采取行动?

OnSharedPreferenceChangeListener使用SharedPreferences检索到的通过PreferenceManager和注册一个getDefaultSharedPreferences()

如何根据偏好的变化更改 PreferenceActivity 的 UI?

一般来说,你不会。欢迎您OnSharedPreferenceChangeListener使用SharedPreferences检索到的PreferenceManager和进行注册getDefaultSharedPreferences()。从那里,您可以Preference从您的PreferenceActivity通孔获取findPreference()并调整以适应。

如何启用或禁用某些取决于其他首选项(如 CheckBoxPreference)的首选项?所以用户只有在他首先启用该功能时才能编辑这些首选项。

根据需要添加android:dependency到您的偏好 XML。

于 2011-05-08T21:52:33.403 回答