7

我想动态更改onCreateOptionsMenu项目。我已经纠正了我的问题,唯一的解决方案是打电话onCreateOptionsMenuonPostCreate但我不知道如何打电话。我已经尝试过我的解决方案无效。甚至可能..?

4

2 回答 2

23

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

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

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

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

在 Android 3.0 及更高版本上,当菜单项出现在操作栏中时,选项菜单被认为始终处于打开状态。当事件发生并且您想要执行菜单更新时,您必须调用invalidateOptionsMenu()系统调用来请求onPrepareOptionsMenu()

invalidateOptionsMenu()在 API 11 中添加,使我们能够强制再次调用 onCreateOptionsMenu()。

无效选项菜单

笔记:

在 ICS 和 Honeycomb 的情况下,在 Gingerbread和早期版本中调用 afteronCreateOptionsMenu()但before 。onCreate()onPostCreate()onCreate()onPostCreate()

尝试以下操作:

public static void refreshMenu(Activity activity)
{
    activity.invalidateOptionsMenu();
}
于 2014-04-28T05:48:48.103 回答
17

用这个,

无效选项菜单();

于 2014-04-28T05:20:11.070 回答