如何以及何时调用覆盖方法 onPrepareOptionsMenu()?
我已经看到,在 onCreateOptionsMenu()之后会自动调用 onPrepareOptionsMenu()。
如果我在任何动作项目点击事件上调用 invalidateOptionsMenu(),那么它将被称为,
onPrepareOptionsMenu() - > onCreateOptionsMenu() - > onPrepareOptionsMenu()
为什么onPrepareOptionsMenu()会被调用两次?
和
我的问题是如何在运行时更新两个不同的动作项目点击事件的ActionBar项目?否则,它被称为与onPrepareOptionsMenu()中写的相同的实现。
答案 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中相应地制定条件。这解决了这个问题。