什么时候以及多久调用一次onPrepareOptionsMenu()方法来处理ActionBar?

32
很明显对于Activities - 这个方法在菜单显示之前被调用。但是当ActionBar总是显示时呢?如何触发它来动态更新menuItems

您可以使用onPrepareOptionsMenu()方法来高效地启用/禁用项目或以其他方式动态修改内容。 - Zar E Ahmer
2个回答

60

根据文档的建议,使用 invalidateOptionsMenu() 方法来触发 onPrepareOptionMenu() 方法。

在 Android 3.0 及更高版本中,当您想要更新菜单时,必须调用 invalidateOptionsMenu() 方法,因为菜单始终处于打开状态。系统会随后调用 onPrepareOptionsMenu() 方法以便您可以更新菜单项。


如果您正在使用ActionBarSherlock,您可以使用以下活动方法: supportInvalidateOptionsMenu(); 如果您在片段中,请改为调用getActivity().supportInvalidateOptionsMenu(); - edrian

0

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

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接