我正在使用PreferenceActivity设置一些有关我拥有的另一个BroadcastReciever的首选项。

使用XML文件制作首选项GUI的框架确实非常简单,但我找不到如何实际使用这些首选项做事的手脚。特别:


如何注册我的BroadcastReciever来收听我的偏好设置的变化?
它看起来像广播接收者的上下文与活动不同,因此我没有向正确的SharedPreferences注册,因为我没有拦截这些更改。
更改首选项后,如何在PreferenceActivity中采取行动?我想我不需要将PreferenceActivity注册为首选项的侦听器,因此必须有更简单的方法。
如何更改PreferenceActivity的用户界面以适应首选项的更改?例如,将首选项的“摘要”属性设置为用户选择的值?
如何启用或禁用某些依赖于其他首选项(例如CheckBoxPreference)的首选项?因此,只有先启用该功能,用户才能编辑这些首选项。


我浏览了文档,但是除了从XML添加首选项之外,没有使用PreferenceActivity的示例。

我觉得我在这里想念一些巨大的东西,因为它看起来很简单,但我还是想不起来...

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

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

最佳答案

如何注册我的BroadcastReciever来收听我的喜好更改?


如果在清单中注册了BroadcastReceiver,则您不会听取偏好设置中的更改,因为BroadcastReceiver仅会持续几毫秒。只需在onReceive()期间读取最新值。

如果BroadcastReceiver由其他调用registerReceiver()的组件注册,则该组件可以将OnSharedPreferenceChangeListener注册到通过SharedPreferencesPreferenceManager检索的getDefaultSharedPreferences()中。


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


那句话毫无意义。


  更改首选项后,我如何在PreferenceActivity中采取行动?


用通过OnSharedPreferenceChangeListenerSharedPreferences检索的PreferenceManager注册getDefaultSharedPreferences()


  如何更改与首选项中的更改相对应的PreferenceActivity的UI?


通常,您不需要。欢迎您将通过OnSharedPreferenceChangeListenerSharedPreferences检索到的PreferenceManager注册为getDefaultSharedPreferences()。在这里,您可以通过PreferencePreferenceActivity中获取findPreference()并进行调整以适合需要。


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


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

关于android - 关于Android PreferenceActivity的一系列问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5930507/

10-11 20:02