android - 支持 v7 ActionBarActivity,每次调用 SupportInvalidateOptionsMenu() 后调用 OnCreateOptionsMenu()

标签 android android-actionbar android-lifecycle android-menu android-optionsmenu

在我的 Activity(支持 v7 ActionBarActivity)中,我有菜单和抽屉导航。

当抽屉导航打开时,我想隐藏菜单项。 我将它们隐藏在 onPrepareOptionsMenu() 中。

正如 android 文档中所述,为了触发 onPrepareOptionsMenu(),您需要调用 supportInvalidateOptionsMenu()

我就是这么做的。但在我调用 supportInvalidateOptionsMenu() 后,会调用 onCreateOptionsMenu(),然后调用 onPrepareOptionsMenu()

据我了解,onCreateOptionsMenu() 应该仅在 Activity 开始时调用一次。

我错过了什么吗?

最佳答案

正确的周期是:

  • 调用 supportInvalidateOptionsMenu() 会导致菜单获取 重新创建,即调用 onCreateOptionsMenu()
  • 每当调用 onCreateOptionsMenu() 时,onPrepareOptionsMenu() 被调用来准备菜单。

因此调用 supportInvalidateOptionsMenu() 将始终导致 onCreateOptionsMenu() 被调用。希望这有助于消除困惑。

关于android - 支持 v7 ActionBarActivity,每次调用 SupportInvalidateOptionsMenu() 后调用 OnCreateOptionsMenu(),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28803908/

相关文章:

android - handleLifecycleEvent 和 markState 之间有什么区别(来自 LifecycleRegistry 类)

android - NotificationListenerService 未绑定(bind)到 Android 8 (Oreo) 上的 SystemUI

android - 从命令行构建应用程序

android - 自定义 Android ActionBar

android - 在 fragment 的屏幕方向发生变化之前,无法摆脱 ActionBar 中的自定义 View

android - 如何让LiveData在另外两个LiveData之间切换

Android Gradient drawable颜色变化

java - 在Thread内创建一个service或者在Service内创建一个service

flutter - 如何在操作栏上有两个搜索栏?

android - Activity 和 Fragment 中的自动 UI 配置更改处理有时会失败