关于Android PreferenceActivity的一堆问题

时间:2011-05-08 21:27:21

标签: android broadcastreceiver android-preferences preferenceactivity

我正在使用PreferenceActivity来设置我对其他BroadcastReciever的偏好。

虽然使用XML文件制作首选项GUI的框架非常简单,但是我无法找到如何实际使用这些首选项进行操作的方法。特别是:

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

  2. 如果首选项发生变化,我如何在我的PreferenceActivity中采取行动?我想我不需要注册PreferenceActivity作为偏好的倾听者,所以必须有更简单的方法。

  3. 如何更改适用于偏好设置更改的PreferenceActivity的用户界面?例如,将首选项的“摘要”属性设置为用户选择的值?

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

  5. 我查看了文档,但没有使用PreferenceActivity的例子,只是在XML中添加首选项。

    我觉得我在这里缺少一些巨大的东西,因为它看起来很简单,但我无法理解......

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

    顺便说一句: 我正在为Android 1.6开发,因此无法使用所有新的PreferenceFragment

1 个答案:

答案 0 :(得分:1)

  

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

如果在清单中注册BroadcastReceiver,则不会听取首选项的更改,因为BroadcastReceiver只会在几毫秒左右。只需阅读onReceive()期间的最新值。

如果调用BroadcastReceiver的其他组件注册了registerReceiver(),则该组件可以通过OnSharedPreferenceChangeListener和{{SharedPreferences注册PreferenceManager注册getDefaultSharedPreferences() 1}}。

  

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

这句话毫无意义。

  

如果首选项发生变化,我如何在PreferenceActivity中采取行动?

通过OnSharedPreferenceChangeListenerSharedPreferences检索PreferenceManager注册getDefaultSharedPreferences()

  

如何更改适合首选项更改的PreferenceActivity的UI?

一般情况下,你没有。欢迎您通过OnSharedPreferenceChangeListenerSharedPreferences注册PreferenceManager注册getDefaultSharedPreferences()。在那里,您可以通过Preference通过PreferenceActivity获取findPreference()并调整为适合。

  

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

根据需要将android:dependency添加到您的首选项XML。