我想动态更改onCreateOptionsMenu
项。我已经纠正了我的问题,唯一的解决办法是在onCreateOptionsMenu
中拨打onPostCreate
,但我不知道如何调用它。
我已经尝试过我的解决方案无效。它甚至可能......?
答案 0 :(得分:19)
在运行时更改菜单项(来自文档)
系统调用onCreateOptionsMenu()
后,它会保留您填充的Menu
个实例,除非由于某种原因导致菜单失效,否则不会再次调用onCreateOptionsMenu()
。但是,您应该仅使用onCreateOptionsMenu()
来创建初始菜单状态,而不是在活动生命周期中进行更改。
如果要根据活动生命周期中发生的事件修改选项菜单,可以使用onPrepareOptionsMenu()
方法执行此操作。此方法会将Menu对象传递给当前存在,以便您可以对其进行修改,例如添加,删除或禁用项目。 (片段还提供onPrepareOptionsMenu()
回调。)
在Android 2.3.x及更低版本上,每次用户打开选项菜单(按菜单按钮)时,系统都会调用onPrepareOptionsMenu()
。
在Android 3.0及更高版本中,当操作栏中显示菜单项时,选项菜单被视为始终打开。当事件发生且您想要执行菜单更新时,您必须致电invalidateOptionsMenu()
以请求系统调用onPrepareOptionsMenu()
。
invalidateOptionsMenu()
,使我们能够强制再次调用onCreateOptionsMenu()。
注意:强>
如果ICS和Honeycomb onCreateOptionsMenu()
在onCreate()
和onPostCreate()
之后调用,而在Gingerbread及其早期版本中,则会在onCreate()
之后但在onPostCreate()
之前调用。
请尝试以下操作:
public static void refreshMenu(Activity activity)
{
activity.invalidateOptionsMenu();
}
答案 1 :(得分:11)
使用此,
invalidateOptionsMenu();