Android 首选项屏幕,包含相互依赖的条目

发布于 2024-12-03 03:08:54 字数 199 浏览 1 评论 0原文

我有一个 Android 首选项屏幕,其中一些首选项是相互依赖的。

换句话说,如果其中一个首选项设置为某个值,则另外两个首选项可用。 如果不是,那么它们就不是,因为它们毫无意义。

具体来说,我有一个具有 3 个可能值的选项:提示、是和否。 当该值设置为“否”时,我想锁定其他 2 个选项。

在 Android 2.1 中如何执行此操作?

I have an Android preferences screen where some of the preferences are interdependent.

In other words, if one of the preferences is set to a certain value(s) then another two of the others are available.
If not, then they are not because they are meaningless.

Specifically, I have an option with 3 possible values: Prompt, Yes and No.
When the value is set to No I want to lock the other 2 options.

How do I do this in Android 2.1?

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

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

发布评论

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

评论(1

梦初启 2024-12-10 03:08:54

基本上只需在 OnPreferenceChangeListener 中针对 3 向首选项调用您想要启用/禁用的首选项上的 setEnabled() 即可。例如:

otherPrefOne = (ListPreference)findPreference("OTHER_PREF_1");
otherPrefTwo = (ListPreference)findPreference("OTHER_PREF_2");

ThreeWayPref = (ListPreference)findPreference("3WAY_PREF");
ThreeWayPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        if (((String)newValue).equals("No")) {
            otherPrefOne.setEnabled(false);
            otherPrefTwo.setEnabled(false);
        } else {
            otherPrefOne.setEnabled(true);
            otherPrefTwo.setEnabled(true);
        }
        return true;
    }
});

Basically just call setEnabled() on the preferences you want to enable/disable in the OnPreferenceChangeListener for the 3-way preference. e.g.:

otherPrefOne = (ListPreference)findPreference("OTHER_PREF_1");
otherPrefTwo = (ListPreference)findPreference("OTHER_PREF_2");

ThreeWayPref = (ListPreference)findPreference("3WAY_PREF");
ThreeWayPref.setOnPreferenceChangeListener(new OnPreferenceChangeListener() {
    public boolean onPreferenceChange(Preference preference, Object newValue) {
        if (((String)newValue).equals("No")) {
            otherPrefOne.setEnabled(false);
            otherPrefTwo.setEnabled(false);
        } else {
            otherPrefOne.setEnabled(true);
            otherPrefTwo.setEnabled(true);
        }
        return true;
    }
});
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文