使用 ActionBar,如何以及何时调用 onPrepareOptionsMenu()?
using ActionBar, How and when onPrepareOptionsMenu() invoked?
如何以及何时调用覆盖方法 onPrepareOptionsMenu()?
我已经看到,onPrepareOptionsMenu() 将在 onCreateOptionsMenu() 之后自动调用。
如果我在任何操作项点击事件上调用 invalidateOptionsMenu(),那么它会被调用为,
onPrepareOptionsMenu() -> onCreateOptionsMenu() -> onPrepareOptionsMenu()
为什么 onPrepareOptionsMenu() 被调用了两次?
和
我的问题是如何在运行时针对两个不同的操作项单击事件更新 ActionBar 项?否则它被称为与 onPrepareOptionsMenu() 中编写的相同实现。
In Android 3.0+ the Action Bar forces the options menu to be built early so that items chosen to show as actions may be displayed when the activity first becomes visible. The Activity method invalidateOptionsMenu forces the entire menu to be destroyed and recreated from onCreateOptionsMenu(android.view.Menu), offering a similar though heavier-weight opportunity to change the menu's contents. Normally this functionality is used to support a changing configuration of Fragments.
如果您想要 change/update 操作栏菜单项,您可以调用 invalidateOptionsMenu
重新创建操作栏菜单,例如创建一些菜单项 VISIBLE/INVISIBLE
。
在我的例子中,我想为多个 Action-item 单击事件加载动态内容。无需覆盖 onPrepareOptionsMenu(),而是我在 onOptionsItemSelected 上实例化标志值并调用 invalidateOptionsMenu,因此它会在每次出现 invalidateOptionsMenu 时调用 onCreateOptionsMenu。并在 onCreateOptionsMenu.This 中相应地制定条件解决了问题。
如何以及何时调用覆盖方法 onPrepareOptionsMenu()?
我已经看到,onPrepareOptionsMenu() 将在 onCreateOptionsMenu() 之后自动调用。
如果我在任何操作项点击事件上调用 invalidateOptionsMenu(),那么它会被调用为,
onPrepareOptionsMenu() -> onCreateOptionsMenu() -> onPrepareOptionsMenu()
为什么 onPrepareOptionsMenu() 被调用了两次?
和
我的问题是如何在运行时针对两个不同的操作项单击事件更新 ActionBar 项?否则它被称为与 onPrepareOptionsMenu() 中编写的相同实现。
In Android 3.0+ the Action Bar forces the options menu to be built early so that items chosen to show as actions may be displayed when the activity first becomes visible. The Activity method invalidateOptionsMenu forces the entire menu to be destroyed and recreated from onCreateOptionsMenu(android.view.Menu), offering a similar though heavier-weight opportunity to change the menu's contents. Normally this functionality is used to support a changing configuration of Fragments.
如果您想要 change/update 操作栏菜单项,您可以调用 invalidateOptionsMenu
重新创建操作栏菜单,例如创建一些菜单项 VISIBLE/INVISIBLE
。
在我的例子中,我想为多个 Action-item 单击事件加载动态内容。无需覆盖 onPrepareOptionsMenu(),而是我在 onOptionsItemSelected 上实例化标志值并调用 invalidateOptionsMenu,因此它会在每次出现 invalidateOptionsMenu 时调用 onCreateOptionsMenu。并在 onCreateOptionsMenu.This 中相应地制定条件解决了问题。