android - supportInvalidateOptionsMenu() 是否有效?

标签 android

我遇到了以下问题 - 在发生某些事情后,我必须更新应用程序中的 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/

相关文章:

android - 无法弄清楚在 OkHttp 的 onResponse 方法中要检查什么

android - 将 LiveStream 整合到 Android 应用程序中

java - 将空格和特殊字符传递给 RestFul Web 服务

通知服务中的android内存泄漏

java - 如何在 Java/Android 的回调函数中设置局部变量?

java - 如何检查警报是否可见android

带有 Facebook 登录示例的 java.lang.RuntimeException

java - 在 Android 中设置日期和所需时间

android - apk 必须使用与前一个相同的证书进行签名

android - 从 Android 手机获取可用的剩余电池时间