2

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

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

其他人(我目前的方式)只是依靠用户点击手机上的菜单按钮。我读到有些手机不再有菜单按钮,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

4 回答 4

4

使用“菜单按钮”方法。通常,在英语中,该按钮应称为“设置”,而不是“首选项”,即使它管理首选项。傻,我知道。

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

唯一不运行 Android 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 设计指南说您应该始终将设置选项放在溢出菜单中。

希望能解惑,有什么其他的,欢迎提问。

于 2012-07-28T16:55:26.003 回答
1

感谢大家的帮助,尤其是史蒂文的帮助,我了解到以下内容:

  • 对于 Android 3.0+,访问我的 Preference 活动的有效方法是实现操作栏
  • 可以通过将主题更改为 Theme.Holo 来添加操作栏,该主题可在 3.0+ 平台上使用
  • 因为我的手机是 2.2,所以当我在 manifest 文件中设置 Holo 主题时没有找到,这是因为我的构建目标是 2.2
  • 我最初将 minSdkVersion 更改为 11 以使主题能够正常工作,但这意味着我将无法在我的手机上对其进行测试,并且 Android 版本低于 3.0 的人将无法使用我的应用程序,如果他们想要
  • 实际的方法是进入 Project>Preferences>Android 并将构建目标设置为最新版本的 Android(这样,具有更高操作系统版本的手机可以从更新的主题相关更改中受益,而旧版本不受影响)
  • 设置更高的构建目标时要注意的一件事是您使用的类的兼容性。某些类可能仅适用于较高版本的 Android,因此会导致您的应用在较低版本上崩溃。
于 2012-07-28T21:05:34.250 回答
0

我建议你两者都做(这就是我所做的)。您 virtual button在屏幕上显示了一个设置,当单击它时,会弹出设置屏幕。当您点击 时,您可以选择physical button弹出设置屏幕。

于 2012-07-28T17:06:00.017 回答
0

一些比我更聪明(并且更美观)的人在 Android 设计指南中讨论了设置。

我的通用 UI 设计原则是:

  1. 您一直在做的事情应该通过屏幕(内容区域或 ActionBar 操作)控件来访问。
  2. 您每天执行一次的操作应在菜单的顶层(或仅在主屏幕上的屏幕上)访问。
  3. 您很少做的事情(例如更改用户首选项)可以随心所欲地隐藏在菜单层次结构中。:-)

在实践中,我通常希望设置位于主 Activity 的第一个溢出级别。

于 2012-07-28T18:09:29.293 回答