在onPostCreate中调用onCreateOptionsMenu

时间:2014-04-28 05:15:25

标签: android oncreateoptionsmenu

我想动态更改onCreateOptionsMenu项。我已经纠正了我的问题,唯一的解决办法是在onCreateOptionsMenu中拨打onPostCreate,但我不知道如何调用它。 我已经尝试过我的解决方案无效。它甚至可能......?

2 个答案:

答案 0 :(得分:19)

在运行时更改菜单项(来自文档)

系统调用onCreateOptionsMenu()后,它会保留您填充的Menu个实例,除非由于某种原因导致菜单失效,否则不会再次调用onCreateOptionsMenu()。但是,您应该仅使用onCreateOptionsMenu()来创建初始菜单状态,而不是在活动生命周期中进行更改。

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

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

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

在API 11中添加了

invalidateOptionsMenu(),使我们能够强制再次调用onCreateOptionsMenu()。

invalidateOptionsMenu

注意:

如果ICS和Honeycomb onCreateOptionsMenu()onCreate()onPostCreate()之后调用,而在Gingerbread及其早期版本中,则会在onCreate()之后但在onPostCreate()之前调用。

请尝试以下操作:

public static void refreshMenu(Activity activity)
{
    activity.invalidateOptionsMenu();
}

答案 1 :(得分:11)

使用此,

invalidateOptionsMenu();