onCreateOptionsMenu(菜单菜单)仅在活动的生命周期内被调用一次

jax*_*jax 15 android

我注意到了

@Override
public boolean onCreateOptionsMenu(Menu menu) {
Run Code Online (Sandbox Code Playgroud)

只被召唤一次.我需要在每次显示菜单时调用它,因为我根据应用程序状态在菜单中添加/删除项目.

这可能吗?

Lui*_*ano 28

是.要做到这一点,你需要使用:

public boolean onPrepareOptionsMenu (Menu menu) 
Run Code Online (Sandbox Code Playgroud)

每次显示选项菜单之前,都会执行该代码.更多信息在这里.


小智 9

如果您希望每次打开时都更改菜单,则需要考虑的其他因素取决于Android sdk版本.

这是开发人员指南所说的:

如果要根据活动生命周期中发生的事件修改选项菜单,可以在onPrepareOptionsMenu()方法中执行此操作.此方法会将Menu对象传递给当前存在,以便您可以对其进行修改,例如添加,删除或禁用项目.(片段还提供onPrepareOptionsMenu()回调.)

在Android 2.3.x及更低版本中,每次用户打开选项菜单(按菜单按钮)时,系统都会调用onPrepareOptionsMenu().

在Android 3.0及更高版本中,当操作栏中显示菜单项时,选项菜单被视为始终打开.当事件发生并且您想要执行菜单更新时,必须调用invalidateOptionsMenu()以请求系统调用onPrepareOptionsMenu().