我想动态更改onCreateOptionsMenu项目。我已经纠正了我的问题,唯一的解决方案是打电话onCreateOptionsMenu,onPostCreate但我不知道如何打电话。我已经尝试过我的解决方案无效。甚至可能..?
2 回答
在运行时更改菜单项(来自 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();
}
用这个,
无效选项菜单();