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

时间:2010-12-12 03:41:10

标签: android

我注意到了

@Override
public boolean onCreateOptionsMenu(Menu menu) {

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

这可能吗?

3 个答案:

答案 0 :(得分:28)

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

public boolean onPrepareOptionsMenu (Menu menu) 

每次显示选项菜单之前,都会执行该代码。 更多信息here

答案 1 :(得分:9)

如果您想要在每次打开时更改菜单,还需要考虑其他因素取决于Android sdk版本。

这是开发者指南所说的:

  

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

     

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

     

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

答案 2 :(得分:2)

您的意思是想要动态更新菜单项吗? 覆盖onPrepareOptionsMenu()