Android 在 PreferenceScreen 之间切换

发布于 2024-11-17 14:01:19 字数 488 浏览 1 评论 0原文

我有一个 PreferencesScreen,其中有一些首选项和一个子屏幕。它看起来像这样:

<PreferenceScreen android:key="root">

    <Preference android:key="first" />

    <PreferenceScreen android:key="subScreen" />
        <Preference android:key="second" />
        <Preference android:key="third" />
    </PreferenceScreen>

</PreferenceScreen>

当用户单击子屏幕时,他会移动到子屏幕视图。现在,当用户单击“第二个”或“第三个”时,我想将用户重定向到“root”首选项屏幕。我似乎没有找到正确的 API 来关闭子屏幕或聚焦前一个屏幕。有想法吗?

I have a PreferencesScreen, that has some Preferences and a sub-screen. It looks like this:

<PreferenceScreen android:key="root">

    <Preference android:key="first" />

    <PreferenceScreen android:key="subScreen" />
        <Preference android:key="second" />
        <Preference android:key="third" />
    </PreferenceScreen>

</PreferenceScreen>

When user clicks the subscreen, he is moved to the subscreen view. Now I want to redirect the user to "root" preference screen when he clicks on "second" or "third". I don't seem to find the right API to either close the subscreen, or focus the previous one. Ideas?

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

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

发布评论

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

评论(2

复古式 2024-11-24 14:01:19

首选项子屏幕显示为对话框,在您的情况下,关闭代表相应 PreferenceScreen 的对话框就足够了。将以下代码片段插入到您可能为“第二”和“第三”首选项设置的 OnPreferenceClickListeneronPreferenceClick() 方法中以关闭对话框:

PreferenceScreen ps = (PreferenceScreen)PrefsActivity.this.getPreferenceScreen()
    .findPreference("subScreen");
ps.getDialog().dismiss();

其中 PrefsActivity 是应用程序中使用的 PreferenceActivity 的封闭实例。

Preference subscreen is displayed as a dialog, in your case it would be enough to dismiss the dialog representing appropriate PreferenceScreen. Insert the following snippet into onPreferenceClick() method of OnPreferenceClickListener you probably set for "second" and "third" preferences to close the dialog:

PreferenceScreen ps = (PreferenceScreen)PrefsActivity.this.getPreferenceScreen()
    .findPreference("subScreen");
ps.getDialog().dismiss();

where PrefsActivity is the enclosing instance of PreferenceActivity that is used in your application.

初与友歌 2024-11-24 14:01:19

我不知道为什么你首先只有 Preference 元素。在我的脑海中,我无法想象用户会在“设置”中遇到您想要的行为的任何地方,因此您尝试做的事情可能是意想不到的。另外,我建议您开始放弃嵌套的 PreferenceScreen 元素,因为 Honeycomb 的新方向是 PreferenceFragments

话虽如此,请在 PreferenceActivity 上尝试 setPreferenceScreen() 并查看它是否满足您的需要。

I have no idea why you have bare Preference elements in the first place. Off the top of my head, I cannot think of anywhere in Settings where the user would encounter your desired behavior, so what you are trying to do is likely to be unexpected. Also, I recommend you start to move away from nested PreferenceScreen elements, as the new direction is PreferenceFragments for Honeycomb onward.

That being said, try setPreferenceScreen() on PreferenceActivity and see if it gives you what you need.

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