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

时间:2015-03-02 06:34:55

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

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

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

正如Android文档中所述,为了触发onPrepareOptionsMenu(),您需要致电supportInvalidateOptionsMenu()

我正在这样做。但在我致电supportInvalidateOptionsMenu()后,onCreateOptionsMenu()被调用而不是onPrepareOptionsMenu()

据我了解,onCreateOptionsMenu()只应在Activity的开头调用一次。

我错过了什么吗?

1 个答案:

答案 0 :(得分:4)

正确的周期是:

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

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