Android:让用户访问偏好活动的最佳方式?

Android:让用户访问偏好活动的最佳方式?,android,mobile,Android,Mobile,我有一个正在制作的应用程序,并且有一个Preferences活动,允许用户选择应用程序的设置 我需要的帮助是选择用户访问首选项活动的方式。有些教程实际上在主活动中有一个按钮,标记为“首选项”,允许用户访问该活动 其他人(以我目前的方式)仅仅依靠用户点击手机上的菜单按钮。我读到一些手机不再有菜单按钮,Android团队正试图摆脱物理导航按钮的要求 所以我有点困惑,关于这个话题的普遍共识是什么?多谢各位 编辑:这是我当前的菜单创建代码 @Override public boolean onC

我有一个正在制作的应用程序,并且有一个Preferences活动,允许用户选择应用程序的设置

我需要的帮助是选择用户访问首选项活动的方式。有些教程实际上在主活动中有一个按钮,标记为“首选项”,允许用户访问该活动

其他人(以我目前的方式)仅仅依靠用户点击手机上的菜单按钮。我读到一些手机不再有菜单按钮,Android团队正试图摆脱物理导航按钮的要求

所以我有点困惑,关于这个话题的普遍共识是什么?多谢各位

编辑:这是我当前的菜单创建代码

@Override
    public boolean onCreateOptionsMenu(Menu menu) {
        menu.add(Menu.NONE, 0, 0, "Settings");
        return super.onCreateOptionsMenu(menu);
    }

    @Override
    public boolean onOptionsItemSelected(MenuItem item) {
        switch (item.getItemId()) {
        case 0:
            startActivity(new Intent(this, Preferences.class));
            return true;
        }
        return false;
    }
使用“菜单按钮”方法。通常,在英语中,按钮应称为“设置”,而不是“首选项”,即使它管理首选项。傻,我知道

关于没有菜单按钮的手机:

只有不支持它们的手机运行安卓4.0或更高版本。只要在项目构建中以Android 3.0或更高版本为目标,并正确创建菜单项(如果您需要知道如何创建,我将提供一个片段),Android将检测到没有硬件菜单按钮,并在操作栏中添加“溢出”菜单

编辑:以下是代码片段:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuItem buttonSettings = menu.add("Settings"); // This is a hardcoded string. When you get around to it, switch it to a localized String resource.
    buttonSettings.setIcon(R.drawable.ic_settings); // I have a custom icon for this. You can use the one in android.R.drawable, but I don't know its name right now.
    buttonSettings.setShowAsAction(MenuItem.SHOW_AS_ACTION_NEVER); // This forces it to go in the overflow menu, which is preferred.
    buttonSettings.setOnMenuItemClickListener(new MenuItem.OnMenuItemClickListener() {

        public boolean onMenuItemClick(MenuItem item) {
            Intent settingsIntent = new Intent(YourActivity.this, Preferences.class); // Change YourActivity to.. well, your activity. Change Preferences to the name of your Settings activity.
            YourActivity.this.startActivity(settingsIntent);
            return false; // I honestly don't know why this should return false, but every example I've seen has it do so. So I'd leave it in.
        }
    });
return true;
}
溢出菜单看起来像三个点,并且像操作栏的“更多…”选项。Android设计指南说,你应该总是把你的设置选项放在溢出菜单中

希望你能把事情弄清楚,还有什么事,尽管问吧。

我建议你两个都做(我就是这么做的)。屏幕上显示了设置
虚拟按钮
,单击该按钮时,设置屏幕弹出。当点击
物理按钮时,您可以选择弹出设置屏幕。

一些比我更聪明(更美观)的人在《Android设计指南》中讨论过

我的通用UI设计原则是:

  • 你一直在做的事情应该在屏幕上显示 (内容区域或操作栏操作)控件
  • 你每天做一次的事情应该在网上访问 菜单的顶层(或仅在主屏幕上显示)
  • 你很少做的事情(比如改变 用户首选项)可以在菜单层次结构中隐藏得尽可能深 想要……-)
    在实践中,我通常希望设置处于家庭活动的第一个溢出级别。

    感谢大家的帮助,特别是Steven的帮助,我学到了以下几点:

    • 对于Android 3.0+,访问我的首选项活动的有效方法是实现操作栏
    • 可以通过将主题更改为theme.Holo来添加操作栏,theme.Holo可在3.0+平台上使用
    • 因为我有一部2.2版本的手机,所以当我在清单文件中设置全息主题时,没有找到它,这是因为我的构建目标是2.2
    • 我最初将Minsdk的版本改为11,以便主题能够正常工作,但这意味着我无法在手机上测试它,如果安卓版本低于3.0,任何人都无法使用我的应用程序
    • 实际的方法是进入Project>Preferences>Android并将构建目标设置为最新版本的Android(这样,操作系统版本较高的手机可以受益于与主题相关的更新,而较旧版本则不受影响)
    • 当设置更高的构建目标时,需要注意的一件事是您使用的类的兼容性。有些类可能只在Android的较高版本上工作,因此会导致应用程序在较低版本上崩溃

    我也喜欢这个想法,不妨让用户尽可能清楚地感受到他们的体验。是的,这也会让你的应用程序的用户界面和用户体验更加直观,让用户感到满意:我明白了。嗯,我正在测试我的老手机(安卓2.2)。所以我有菜单按钮,选项菜单出现。我只需要确保在安卓3.0+上,我的设置选项不会消失,对吗?它将自动添加到动作栏中的三个点出现的位置-希望如此。如果你手头有代码片段,我很想看看。谢谢Steve。试着在4.0模拟器中启动它。我现在不在家,所以我需要一分钟的时间来获取片段。如果您愿意,您可以将其发送给我,我可以在我的4.1手机上进行测试。用代码片段更新了我的答案。谢谢,我正在模拟器上尝试,看看会发生什么。我会让你知道的-不要急着写代码段。不管怎样,还是添加了代码段。另外,protip:如果一个设备有4.0和一个硬件菜单按钮,它会在操作栏中隐藏溢出项,并在他们按下菜单按钮时打开溢出菜单。嘿,我喜欢这个概念。我想从现在起我会遵循这些指导方针。我只是不太熟悉操作栏,因为我只有一部安卓2.2手机。我将开始在模拟器上进行试验。谢谢。请考虑一下ActoBaCurpAt样品和Acon BoScLoCK。如果你能拥有一个统一的用户体验,涵盖最新热点,并将传统用户带到身边,那就太棒了。