需要动态改变ActionBar上的菜单项,网上搜了N久,从StackOverFlow上找到了一些回答,最后还是只能静下心仔细研究官方文档,参阅这里的文档:
On Android 3.0 and higher, the options menu is considered to always be open when menu items are presented in the action bar. When an event occurs and you want to perform a menu update, you must callinvalidateOptionsMenu()
to request that the system call onPrepareOptionsMenu()
.
这里的意思写得非常明确:如果菜单项是被放在ActionBar里的,那么菜单则被认为是一直处于打开状态。因此要更新菜单时必须调用invalidateOptionMenu(),来要求系统调用onPrepareOptionMenu()。而我们可以在onPrepareOptionMenu()里面去做需要做的事情,比如更换菜单图片,替换菜单文本,或者设置菜单项是否可见或者有效等等。