我想动态更改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();
}
用这个,
无效选项菜单();