其他分享
首页 > 其他分享> > 在Android中创建菜单的正确方法是什么?

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

作者:互联网

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

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

我遇到了一个错误,因此将其更改为boolean,即现在的状态,因此我改为执行此操作,并且它的工作方式是:

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,但是我没有它及其功能.如果方法被显式重写,是否需要这样做,我只是感到困惑.感谢您的帮助.如果需要任何澄清,请告诉我.

解决方法:

解决您的两个特定问题:

> super.onCreateOptionsMenu:通常,当您打算改进基类函数的操作时,最好以这种方式调用基类函数.在这种情况下,它没有什么区别(据您所知),但是文档建议这样做,因此您应该执行它以确保将来的android版本兼容性.
> @Override:此注释是自愿的,但非常有用,它确保方法签名与基础基类的签名匹配.这意味着,如果您声明该方法略有错误(从某种意义上来说,它不同于所重写的方法),编译器将发现差异(而不是仅将其视为新方法而不在上下文中调用它)

因此,如果没有严格要求,两者都是有用且正确的.

标签:android-activity,android-menu,android
来源: https://codeday.me/bug/20191101/1982811.html