菜单onClick属性和方法参数

时间:2014-02-03 03:10:43

标签: android android-menu

我正在练习添加菜单项并尝试对菜单项点击做出反应。根据开发人员的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)参数,否则,即使它正确编译,应用程序也会崩溃。

任何帮助都将不胜感激。

1 个答案:

答案 0 :(得分:1)

onOptionsItemSelected是定义onClick属性和Android 3.0之前可用内容的替代方法(如果您希望向后兼容,则很重要)。它只是提供相同流程的不同方式。当然,onClick可能会使您的应用程序在运行时崩溃,而不是onOptionsItemSelected不处理菜单项(只是导致它什么都不做)。