ActionBar 何时以及多久调用一次 onPrepareOptionsMenu() 方法?
Activities
很清楚 - 该方法在菜单显示之前被调用。但是,如果ActionBar
始终显示呢?如何触发调用它来动态更新menuItems
?
It is clear for Activities
- the method is being called right before the menu is shown. But what about ActionBar
when it is always shown? How to trigger it to be invoked to dynamically update menuItems
?
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(2)
按照文档的建议,使用 invalidateOptionsMenu() 触发 onPrepareOptionMenu() 方法。
在 Android 3.0 及更高版本上,当您想要更新菜单时,必须调用 invalidateOptionsMenu(),因为菜单始终处于打开状态。然后系统将调用 onPrepareOptionsMenu(),以便您可以更新菜单项。
Use invalidateOptionsMenu() to trigger onPrepareOptionMenu() method as suggested by document.
On Android 3.0 and higher, you must call invalidateOptionsMenu() when you want to update the menu, because the menu is always open. The system will then call onPrepareOptionsMenu() so you can update the menu items.
请注意,如果您的最低 sdk 版本低于 Honeycomb(又名 Android 3.0 又名 api level 11),并且您正在使用 ActionBarActivity,则可以调用 supportInvalidateOptionsMenu()
这是 invalidateOptionsMenu() 的支持库版本。
如果您的菜单根据 onCreate() 中的传入意图而更改,您只需在 onPrepareOptionMenu() 中进行更新,如果您稍后在活动生命周期中动态更改菜单,则必须调用 invalideOptionsMenu 或 supportInvalidateOptionsMenu,具体取决于您的最小和目标 sdk 版本。
Note if your min sdk version is less than Honeycomb (aka Android 3.0 aka api level 11), and you are using ActionBarActivity you can call supportInvalidateOptionsMenu()
which is the Support library version of invalidateOptionsMenu().
If your menu changes based upon an incoming intent into onCreate(), you can just do the updates in the onPrepareOptionMenu(), if you dynamically change the menu later in the activities life-cycle you will have to call invalideOptionsMenu, or supportInvalidateOptionsMenu depending on your min and target sdk versions.