【发布时间】:2011-12-01 08:11:53
【问题描述】:
Activities 很清楚 - 该方法在菜单显示之前被调用。但是ActionBar总是显示呢?如何触发它被调用以动态更新menuItems?
【问题讨论】:
-
您可以使用 onPrepareOptionsMenu() 方法有效地启用/禁用项目或以其他方式动态修改内容。
标签: android menu android-actionbar
Activities 很清楚 - 该方法在菜单显示之前被调用。但是ActionBar总是显示呢?如何触发它被调用以动态更新menuItems?
【问题讨论】:
标签: android menu android-actionbar
按照文档的建议,使用 invalidateOptionsMenu() 触发 onPrepareOptionMenu() 方法。
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 级别 11),并且您正在使用 ActionBarActivity,您可以调用 supportInvalidateOptionsMenu() 这是 invalidateOptionsMenu() 的支持库版本。
如果您的菜单基于 onCreate() 的传入意图而更改,您可以只在 onPrepareOptionMenu() 中进行更新,如果您在活动生命周期后期动态更改菜单,则必须调用 invalideOptionsMenu,或者supportInvalidateOptionsMenu 取决于您的最小和目标 sdk 版本。
【讨论】: