android - 在 Android 中创建菜单的正确方法是什么?

标签 android android-activity android-menu

我正在学习一个教程,它显示了这个示例代码来制作一个菜单:

public void onCreateOptionsMenu(Menu m) {
        super.onCreateOptionsMenu(m);
        MenuInflater menuInflater = getMenuInflater();
        menuInflater.inflate(R.menu.time_list_menu, m);
    }

我遇到了一个错误,所以我将它更改为 bool 值,这就是现在的样子,所以我改为这样做,它的工作原理:

public boolean onCreateOptionsMenu(Menu m) {
      super.onCreateOptionsMenu(m);
      MenuInflater menuInflater = getMenuInflater();
      menuInflater.inflate(R.menu.time_list_menu, m);
      return true;
  }

但是我在堆栈溢出的另一个问题中也有类似的东西

Understanding why onCreateOptionsMenu is not displaying a menu

Android 文档也有这个:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.game_menu, menu);
    return true;
  }

super 的调用去哪儿了,为什么没有必要?如果我做错了,制作菜单的正确方法是什么?

虽然我在讨论这个主题,但文档也显示了@Override,但我没有它,也没有它的工作原理。如果方法被显式覆盖,我只是对是否有必要这样做感到困惑。感谢您的帮助。如果需要任何说明,请告诉我。

最佳答案

解决您的两个具体问题:

  1. super.onCreateOptionsMenu:一般来说,当您打算细化它们的操作时,以这种方式调用基类函数是个好主意。在这种情况下,它没有任何区别(据您所知),但文档推荐它,因此您应该执行它以确保 future 的 android 版本兼容性。
  2. @Override:这个注解是自愿的,但非常有用,它确保方法签名与底层基类的签名匹配。这意味着如果您声明该方法略有错误(在与它覆盖的方法不同的意义上),编译器将发现差异(而不是仅仅将其视为一个新方法而不在上下文中调用它)

因此,如果不是严格需要,两者都是有用且正确的。

关于android - 在 Android 中创建菜单的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10594125/

相关文章:

android - 选项菜单锁定在 galaxy s4 上

android - android froyo(api 8)上的底部操作栏

android - 如何在调用 FragmentManager.replace() 时不调用 onCreateOptionsMenu

选择一个选项时,Android Spinner 具有更大的高度

android - 我如何在android studio上看到xml Drawerlayout文件

java - Android 在调用 FragmentTransaction Replace 方法时崩溃?

java - ImageButton被切断了?

android - 减少菜单项的宽度、高度和 TextView 大小

android - 如何在 Android 中解析 URL?

android - Res' 在 Eclipse 中不存在