我遇到了以下问题 - 在发生某些事情后,我必须更新应用程序中的 ActionBar
菜单。我使用来自 appcompat 库的 ActionBarActivity
。
因此,我调用了 supportInvalidateOptionsMenu()
函数,但菜单不会更新。
在 Debug模式下,我看到 onCreateOptionMenu 方法正在调用,但菜单没有改变。
我做错了什么吗?还是 ActionBarActivity
问题?
最佳答案
系统调用onCreateOptionsMenu()
后,它会保留您填充的Menu的一个实例,不会再次调用onCreateOptionsMenu()
,除非菜单因某种原因失效.但是,您应该仅使用 onCreateOptionsMenu()
来创建初始菜单状态,而不是在 Activity 生命周期中进行更改。
如果您想根据 Activity 生命周期中发生的事件修改选项菜单,您可以在 onPrepareOptionsMenu()
方法中执行此操作。此方法将当前存在的 Menu 对象传递给您,以便您可以对其进行修改,例如添加、删除或禁用项目。 ( fragment 还提供了一个 onPrepareOptionsMenu()
回调。)
在 Android 2.3.x 及更低版本上,系统会在用户每次打开选项菜单(按下菜单按钮)时调用 onPrepareOptionsMenu()
。
在 Android 3.0 及更高版本上,当菜单项出现在操作栏中时,选项菜单被视为始终打开。当事件发生并且您想要执行菜单更新时,您必须调用 invalidateOptionsMenu()
以请求系统调用 onPrepareOptionsMenu()
。
了解更多详情 click here
关于android - supportInvalidateOptionsMenu() 是否有效?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22356611/