关于Android PreferenceActivity的一堆问题

发布于 2024-11-06 11:23:34 字数 889 浏览 7 评论 0原文

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

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

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

  2. 当偏好设置发生变化时,我该如何在我的 PreferenceActivity 中采取行动?我想我不需要将 PreferenceActivity 注册为首选项的侦听器,因此必须有更简单的方法。

  3. 如何更改 PreferenceActivity 的 UI 以适应首选项的更改?例如,将首选项的“Summary”属性设置为用户选择的值?

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

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

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

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

顺便提一句: 我正在针对 Android 1.6 进行开发,因此所有新的 PreferenceFragment 都无法使用。

I'm using PreferenceActivity to set some preferences about another BroadcastReciever that i have.

While making the skeleton of the preferences GUI is really simple with XML file, i cant find my hands and legs around how to actually DO something with those preferences. especially:

  1. How do i register my BroadcastReciever to listen to changes in my preferences?
    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.

  2. How do i act in my PreferenceActivity upon changes in the preferences? i guess i dont need to register PreferenceActivity as listener to the preferences, so there must be more simple way.

  3. How do i change the UI of the PreferenceActivity appropriate to the changes in the preferences? for example, set the "Summary" attribute of a preference to the value that the user chose?

  4. 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.

I looked al over the documentation but there is no example of using PreferenceActivity beyond the point of just adding preferences from XML.

I feel like i'm missing something huge here, because it looks so simple, and yet i can't figure it out...

Please try to answer on any of my question.

BTW:
I'm developing for Android 1.6 so all the new PreferenceFragment can't be used.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

别闹i 2024-11-13 11:23:34

如何注册我的 BroadcastReciever 以收听我的偏好设置的更改?

如果 BroadcastReceiver 已在清单中注册,您就不会监听首选项的更改,因为 BroadcastReceiver 只会存在几毫秒。只需在 onReceive() 期间读取最新值即可。

如果 BroadcastReceiver 是由调用 registerReceiver() 的其他组件注册的,则该组件可以使用 SharedPreferences 注册 OnSharedPreferenceChangeListener > 通过 PreferenceManagergetDefaultSharedPreferences() 检索。

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

这句话没有任何意义。

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

使用通过 PreferenceManagergetDefaultSharedPreferences() 检索的 SharedPreferences 注册一个 OnSharedPreferenceChangeListener

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

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

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

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

How do i register my BroadcastReciever to listen to changes in my preferences?

If the BroadcastReceiver is registered in the manifest, you don't listen to changes in your preferences, because the BroadcastReceiver will only be around for milliseconds. Just read the latest values in during onReceive().

If the BroadcastReceiver is registered by some other component calling registerReceiver(), that component can register an OnSharedPreferenceChangeListener with the SharedPreferences retrieved via PreferenceManager and 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.

That sentence makes no sense.

How do i act in my PreferenceActivity upon changes in the preferences?

Register an OnSharedPreferenceChangeListener with the SharedPreferences retrieved via PreferenceManager and getDefaultSharedPreferences().

How do i change the UI of the PreferenceActivity appropriate to the changes in the preferences?

Generally, you don't. You are welcome to register an OnSharedPreferenceChangeListener with the SharedPreferences retrieved via PreferenceManager and getDefaultSharedPreferences(). From there, you can get the Preference from your PreferenceActivity via findPreference() and adjust to suit.

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.

Add android:dependency to your preference XML as needed.

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文