我正在使用 PreferenceActivity
设置一些关于我拥有的另一个 BroadcastReciever
的首选项。
虽然使用 XML 文件制作首选项 GUI 的骨架非常简单,但我无法找到如何使用这些首选项实际执行某些操作的方法。特别是:
如何注册我的
BroadcastReciever
以收听我的偏好变化? 看起来广播接收器的上下文与 Activity 不同,所以我没有注册到正确的SharedPreferences
因为我没有拦截这些更改。如何根据偏好更改在我的
PreferenceActivity
中执行操作?我想我不需要将PreferenceActivity
注册为首选项的监听器,所以必须有更简单的方法。如何根据首选项的变化更改
PreferenceActivity
的 UI?例如,将首选项的“摘要”属性设置为用户选择的值?我如何启用或禁用某些依赖于其他首选项(如
CheckBoxPreference
)的首选项?因此用户只有先启用该功能才能编辑这些首选项。
我查看了所有文档,但除了从 XML 添加首选项之外,没有使用 PreferenceActivity
的示例。
我觉得我在这里遗漏了一些巨大的东西,因为它看起来很简单,但我还是想不通......
请尝试回答我的任何问题。
顺便说一句:
我正在为 Android 1.6 开发,所以所有新的 PreferenceFragment
都不能使用。
最佳答案
How do i register my BroadcastReciever to listen to changes in my preferences?
如果 BroadcastReceiver
已在 list 中注册,则您不会监听首选项中的更改,因为 BroadcastReceiver
只会存在几毫秒。只需在 onReceive()
期间读取最新值。
如果 BroadcastReceiver
被其他调用 registerReceiver()
的组件注册,该组件可以使用 SharedPreferences 注册一个
通过 OnSharedPreferenceChangeListener
PreferenceManager
和 getDefaultSharedPreferences()
检索。
Its look like that the context of the broadcast reciever is not the same as the activity so i'm not registering to the right SharedPreferences because i dont intercept those changes.
这句话没有意义。
How do i act in my PreferenceActivity upon changes in the preferences?
使用通过 PreferenceManager
和 getDefaultSharedPreferences()
检索到的 SharedPreferences
注册一个 OnSharedPreferenceChangeListener
。
How do i change the UI of the PreferenceActivity appropriate to the changes in the preferences?
通常,您不需要。欢迎您使用通过 PreferenceManager
和 getDefaultSharedPreferences()
检索到的 SharedPreferences
注册一个 OnSharedPreferenceChangeListener
。从那里,您可以通过 findPreference()
从您的 PreferenceActivity
获取 Preference
并进行调整以适应。
How do i enable or disable some preferences that depends on another preference (like CheckBoxPreference)? so the user could edit those preferences only if he enabled the feature first.
根据需要将 android:dependency
添加到您的首选项 XML。
关于android - 关于 Android PreferenceActivity 的一堆问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5930507/