我正在练习添加菜单项并尝试对菜单项点击做出反应。根据开发人员的guide,它说:
提示:Android 3.0增加了使用android:onClick属性为XML中的菜单项定义点击行为的功能。属性的值必须是使用菜单的活动定义的方法的名称。该方法必须是公共的并接受单个MenuItem参数 - 当系统调用此方法时,它会传递所选的菜单项。有关详细信息和示例,请参阅菜单资源文档。
但是,同一页面中的示例代码并不遵循该规则:方法不传递MenuItem参数。示例代码为:
@Override
public boolean onOptionsItemSelected(MenuItem item) {
// Handle item selection
switch (item.getItemId()) {
case R.id.new_game:
newGame();
return true;
case R.id.help:
showHelp();
return true;
default:
return super.onOptionsItemSelected(item);
}
}
我的问题是:不应该调用newGame(MenuItem项)和showHelp(MenuItem项),而不是newGame()和showHelp()吗?当我测试自己的时候,事实上需要(MenuItem item)参数,否则,即使它正确编译,应用程序也会崩溃。
任何帮助都将不胜感激。
答案 0 :(得分:1)
onOptionsItemSelected
是定义onClick
属性和Android 3.0之前可用内容的替代方法(如果您希望向后兼容,则很重要)。它只是提供相同流程的不同方式。当然,onClick
可能会使您的应用程序在运行时崩溃,而不是onOptionsItemSelected
不处理菜单项(只是导致它什么都不做)。