什么是onCreateOptionsMenu(Menu menu)?

20

在方法 onCreateOptionsMenu(Menu menu) 中,参数 Menu 和 menu 是什么意思,以及如何使用该方法。

我还有一个问题,为什么在

this

中使用此参数。

Intent intent = new Intent(this, DisplayMessageActivity.class);

菜单是类,而菜单是该类的对象。 - Suhas Bachewar
1
Intent将获取Context作为第一个参数。在语句Intent intent = new Intent(this, DisplayMessageActivity.class);中,this参数表示类的当前上下文。 - SripadRaj
3个回答

37

菜单只是参数menu的类型。例如,您可以为名为string、dog等的变量指定字符串类型,并且在这种情况下,有一个名为menu的参数的Menu类型。

您可以使用onCreateOptionsMenu()来为活动指定选项菜单。在此方法中,您可以将菜单资源(在XML中定义)填充到回调中提供的菜单中。

例如:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    MenuInflater inflater = getMenuInflater();
    inflater.inflate(R.menu.game_menu, menu);
    return true;
}

欲了解更多信息,请访问此链接

至于this

在实例方法或构造函数中,this是对当前对象的引用 - 调用该方法或构造函数的对象。

例如:

public void sendMessage() {
    Intent intent = new Intent(this, DisplayMessageActivity.class);
}

构造函数需要两个参数,并将上下文作为其第一个参数。 this 表示环境数据,并提供有关应用程序环境的全局信息。

如需了解您提供的 Intent 示例的更多信息,请查看此处


我还想包含这个链接,我发现答案中的链接告诉你如何设置onCreateOptionsMenu,但没有很好地描述该方法。 - Shawn
不要忘记在 onCreate 中设置 setHasOptionsMenu(true) - Alexmelyon

27

实现这个方法的目的是将您在R.menu.game_menu布局文件中定义的项目填充到传递的menu中。

#Java

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    getMenuInflater().inflate(R.menu.game_menu, menu);
    return true;
}

#Kotlin

override fun onCreateOptionsMenu(menu: Menu): Boolean {
    menuInflater.inflate(R.menu.game_menu, menu)
    return true
}

在填充菜单项后,您可能希望在选择它们时添加一些操作:

Java

@Override
public boolean onOptionsItemSelected(MenuItem item) {
    switch (item.getItemId()) {
        case R.id.menu_item:
            // Action goes here
            return true;
        default:
            return super.onOptionsItemSelected(item);
    }
}

Kotlin

override fun onOptionsItemSelected(item: MenuItem): Boolean {
    return when (item.itemId) {
        R.id.menu_item -> {
            // Action goes here
            true
        }
        else -> super.onOptionsItemSelected(item)
    }
}

0

什么时候会调用 onCreateOptionsMenu 方法?

onCreateOptionsMenu() 方法是在 Android 运行时需要创建选项菜单时被调用的。

Android 开发者指南:菜单

如果您的应用程序是为 Android 2.3.x 及更低版本开发的,则系统会在用户首次打开菜单时调用 onCreateOptionsMenu() 方法来创建选项菜单。如果您是为 Android 3.0 及更高版本开发的,则系统会在启动活动时调用 onCreateOptionsMenu() 方法,以显示项目到应用栏中。

如何构建选项菜单?

请参考其他答案。

为什么 onCreateOptionsMenu 返回 Boolean 类型?

Activity.html#onCreateOptionsMenu

你必须返回 true 才能显示菜单;如果返回 false,它将不会被显示。
为什么 onOptionsItemSelected 返回 Boolean 当你成功处理一个菜单项时,返回 true。如果你没有处理菜单项,应该调用 onOptionsItemSelected() 的超类实现(默认实现返回 false)。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接