在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