【问题标题】:When and how often is the onPrepareOptionsMenu() method called for ActionBar?何时以及多久为 ActionBar 调用 onPrepareOptionsMenu() 方法?
【发布时间】:2011-12-01 08:11:53
【问题描述】:

Activities 很清楚 - 该方法在菜单显示之前被调用。但是ActionBar总是显示呢?如何触发它被调用以动态更新menuItems

【问题讨论】:

  • 您可以使用 onPrepareOptionsMenu() 方法有效地启用/禁用项目或以其他方式动态修改内容。

标签: android menu android-actionbar


【解决方案1】:

按照文档的建议,使用 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.

【讨论】:

  • 如果你使用 ActionBarSherlock 你可以使用活动方法:supportInvalidateOptionsMenu();如果您在片段中,请调用 getActivity().supportInvalidateOptionsMenu();而是
【解决方案2】:

请注意,如果您的最小 sdk 版本低于 Honeycomb(又名 Android 3.0 又名 api 级别 11),并且您正在使用 ActionBarActivity,您可以调用 supportInvalidateOptionsMenu() 这是 invalidateOptionsMenu() 的支持库版本。

如果您的菜单基于 onCreate() 的传入意图而更改,您可以只在 onPrepareOptionMenu() 中进行更新,如果您在活动生命周期后期动态更改菜单,则必须调用 invalideOptionsMenu,或者supportInvalidateOptionsMenu 取决于您的最小和目标 sdk 版本。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2011-12-07
    • 1970-01-01
    • 2017-10-31
    • 1970-01-01
    • 2012-08-21
    • 1970-01-01
    • 2016-08-20
    相关资源
    最近更新 更多