选择一个后更改菜单项可见性

时间:2014-01-02 15:18:22

标签: android android-actionbar

我有两个菜单项,ID为R.id.startR.id.stop。一开始只有"开始:是可见的。现在我想在选择任何一个时改变它们的可见性。

我尝试通过调用invalidateOptionsMenu(),然后在onPrepareOptionsMenu(menu)上更改了可见性。问题是我变空menu。这可能是因为menu想要重新创建并且我已经空onCreateOptionsMenu(menu)而我之前没有创建过它。

当然我可以重新创建它,但不需要它。有没有办法告诉Android调用onPrepareOptionsMenu但不调用onCreateOptionsMenu

1 个答案:

答案 0 :(得分:1)

你实际上并不需要onPrepareOptionsMenu我曾经使用它,结果并不那么漂亮。

在你的类中创建一个整数(例如我的被称为激活)并随时更改整数值,然后使选项菜单无效:

onClick(View v)
{
     activated=1;
     getActivity().invalidateOptionsMenu();
}

现在在您的选项菜单中,检查整数的值,清除菜单然后相应地膨胀(您可以根据需要进行充气):

 @Override
 public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) 
 {
     if(activated==1)
     {
         menu.clear();  //this makes all the menus invisible
         //my menu is called secret
         getActivity().getMenuInflater().inflate(R.menu.secret, menu);
         //you mgiht want to inflate another one here    
         activated=0;
     }
     else if(activated==2)
     {
            //etc
     }        
     else
     {
            //etc
     }
 }