我注意到了
@Override
public boolean onCreateOptionsMenu(Menu menu) {
只被调用一次。我需要在每次显示菜单时调用它,因为我根据应用程序状态在菜单中添加/删除项目。
这可能吗?
答案 0 :(得分:28)
答案 1 :(得分:9)
如果您想要在每次打开时更改菜单,还需要考虑其他因素取决于Android sdk版本。
这是开发者指南所说的:
如果要根据活动生命周期中发生的事件修改选项菜单,可以在onPrepareOptionsMenu()方法中执行此操作。此方法会将Menu对象传递给当前存在,以便您可以对其进行修改,例如添加,删除或禁用项目。 (片段还提供onPrepareOptionsMenu()回调。)
在Android 2.3.x及更低版本中,每次用户打开选项菜单时,系统都会调用onPrepareOptionsMenu()(按菜单按钮)。
在Android 3.0及更高版本中,当操作栏中显示菜单项时,选项菜单被视为始终打开。当事件发生并且您想要执行菜单更新时,必须调用invalidateOptionsMenu()以请求系统调用onPrepareOptionsMenu()。
答案 2 :(得分:2)
您的意思是想要动态更新菜单项吗? 覆盖onPrepareOptionsMenu()