使用ActionBar,如何以及何时调用onPrepareOptionsMenu()?

时间:2015-03-11 09:44:24

标签: android android-actionbar

如何以及何时调用覆盖方法 onPrepareOptionsMenu()

我已经看到,在 onCreateOptionsMenu()之后会自动调用 onPrepareOptionsMenu()

如果我在任何动作项目点击事件上调用 invalidateOptionsMenu(),那么它将被称为,

onPrepareOptionsMenu() - > onCreateOptionsMenu() - > onPrepareOptionsMenu()

为什么onPrepareOptionsMenu()会被调用两次?

我的问题是如何在运行时更新两个不同的动作项目点击事件的ActionBar项目?否则,它被称为与onPrepareOptionsMenu()中写的相同的实现。

2 个答案:

答案 0 :(得分:0)

  

在Android 3.0+中,操作栏会强制提前构建选项菜单,以便在活动首次显示时可以显示选择显示为操作的项目。 Activity方法invalidateOptionsMenu强制从onCreateOptionsMenu(android.view.Menu)销毁并重新创建整个菜单,提供类似但更重的机会来更改菜单的内容。通常,此功能用于支持更改Fragments的配置。

如果您想更改/更新操作栏菜单项,例如制作一些菜单项invalidateOptionsMenu,您可以致电VISIBLE/INVISIBLE重新创建操作栏菜单。

答案 1 :(得分:0)

在我的情况下,我想为多个Action-item点击事件加载动态内容。无需重写onPrepareOptionsMenu(),而是在onOptionsItemSelected上实例化标志值并调用invalidateOptionsMenu,因此它会在每次出现invalidateOptionsMenu时调用onCreateOptionsMenu。并在onCreateOptionsMenu中相应地制定条件。这解决了这个问题。