我正在使用PreferenceActivity
设置一些有关我拥有的另一个BroadcastReciever
的首选项。
使用XML文件制作首选项GUI的框架确实非常简单,但我找不到如何实际使用这些首选项做事的手脚。特别:
如何注册我的BroadcastReciever
来收听我的偏好设置的变化?
它看起来像广播接收者的上下文与活动不同,因此我没有向正确的SharedPreferences
注册,因为我没有拦截这些更改。
更改首选项后,如何在PreferenceActivity
中采取行动?我想我不需要将PreferenceActivity
注册为首选项的侦听器,因此必须有更简单的方法。
如何更改PreferenceActivity
的用户界面以适应首选项的更改?例如,将首选项的“摘要”属性设置为用户选择的值?
如何启用或禁用某些依赖于其他首选项(例如CheckBoxPreference
)的首选项?因此,只有先启用该功能,用户才能编辑这些首选项。
我浏览了文档,但是除了从XML添加首选项之外,没有使用PreferenceActivity
的示例。
我觉得我在这里想念一些巨大的东西,因为它看起来很简单,但我还是想不起来...
请尝试回答我的任何问题。
顺便说一句:
我正在为Android 1.6开发,因此不能使用所有新的PreferenceFragment
。
最佳答案
如何注册我的BroadcastReciever来收听我的喜好更改?
如果在清单中注册了BroadcastReceiver
,则您不会听取偏好设置中的更改,因为BroadcastReceiver
仅会持续几毫秒。只需在onReceive()
期间读取最新值。
如果BroadcastReceiver
由其他调用registerReceiver()
的组件注册,则该组件可以将OnSharedPreferenceChangeListener
注册到通过SharedPreferences
和PreferenceManager
检索的getDefaultSharedPreferences()
中。
它看起来像广播接收者的上下文与活动不同,因此我没有注册到正确的SharedPreferences,因为我没有拦截这些更改。
那句话毫无意义。
更改首选项后,我如何在PreferenceActivity中采取行动?
用通过OnSharedPreferenceChangeListener
和SharedPreferences
检索的PreferenceManager
注册getDefaultSharedPreferences()
。
如何更改与首选项中的更改相对应的PreferenceActivity的UI?
通常,您不需要。欢迎您将通过OnSharedPreferenceChangeListener
和SharedPreferences
检索到的PreferenceManager
注册为getDefaultSharedPreferences()
。在这里,您可以通过Preference
从PreferenceActivity
中获取findPreference()
并进行调整以适合需要。
如何启用或禁用某些依赖于其他首选项的首选项(例如CheckBoxPreference)?因此,只有先启用该功能,用户才能编辑这些首选项。
根据需要将android:dependency
添加到您的首选项XML。
关于android - 关于Android PreferenceActivity的一系列问题,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/5930507/