我正在学习一个教程,它显示了这个示例代码来制作一个菜单:
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,但我没有它,也没有它的工作原理。如果方法被显式覆盖,我只是对是否有必要这样做感到困惑。感谢您的帮助。如果需要任何说明,请告诉我。
最佳答案
解决您的两个具体问题:
super.onCreateOptionsMenu
:一般来说,当您打算细化它们的操作时,以这种方式调用基类函数是个好主意。在这种情况下,它没有任何区别(据您所知),但文档推荐它,因此您应该执行它以确保 future 的 android 版本兼容性。@Override
:这个注解是自愿的,但非常有用,它确保方法签名与底层基类的签名匹配。这意味着如果您声明该方法略有错误(在与它覆盖的方法不同的意义上),编译器将发现差异(而不是仅仅将其视为一个新方法而不在上下文中调用它)
因此,如果不是严格需要,两者都是有用且正确的。
关于android - 在 Android 中创建菜单的正确方法是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10594125/