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

Support v7 ActionBarActivity, OnCreateOptionsMenu() called after each call to SupportInvalidateOptionsMenu()

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

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

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

我就是这么做的。但是在我调用 supportInvalidateOptionsMenu() 之后,调用 onCreateOptionsMenu() 而不是 onPrepareOptionsMenu()

据我所知,onCreateOptionsMenu() 应该只在 Activity 的开头调用一次。

我错过了什么吗?

正确的循环是:

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

所以调用 supportInvalidateOptionsMenu() 总是会导致 onCreateOptionsMenu() 被调用。希望这有助于消除困惑。