android中如何遍历一个activity的所有menu菜单项

摘要 有时候我们需要动态的隐藏和显示菜单,如果我们有6个菜单,现在的需求是在特定条件下隐藏这些菜单项,那么为了获得这些菜单项,我们必须这样写: @Overridepublic boolean onCreateOptionsMenu(Menu menu) {super.onCreateOptionsMenu(menu);getMenuInflater

有时候我们需要动态的隐藏和显示菜单,如果我们有6个菜单,现在的需求是在特定条件下隐藏这些菜单项,那么为了获得这些菜单项,我们必须这样写:

@Override
public boolean onCreateOptionsMenu(Menu menu) {
    super.onCreateOptionsMenu(menu);
    getMenuInflater().inflate(R.menu.list_option, menu);  
    MenuItem menuItem1=(MenuItem)menu.findItem(R.id.menu1);
    MenuItem menuItem2=(MenuItem)menu.findItem(R.id.menu2);
 
    MenuItem menuItem3=(MenuItem)menu.findItem(R.id.menu3);
 
    MenuItem menuItem4=(MenuItem)menu.findItem(R.id.menu4);             
    MenuItem menuItem5=(MenuItem)menu.findItem(R.id.menu5); 
    MenuItem menuItem6=(MenuItem)menu.findItem(R.id.menu6); 
    menuItem1.setVisible(false);
 
    ........
 
    menuItem6.setVisible(false);
     
    return true;
}

一个如此简单的功能,居然需要那么多重复的代码,一看就给人很不专业的感觉。

而且假如我要将隐藏的这6个菜单全部恢复,那我还要写同样的代码,只不过是将false改成true。

其实反正是全部屏蔽,只要遍历一下菜单项就好了,代码页很简单:

for(int index=0;index<menu.getItemCount();index++){
 
    MenuItem menuItem=menu.getItem(index);
 
     menuItem.setVisible(false);
 
}