无法显示稍后在“onPrepareOptionsMenu”中隐藏的菜单项

时间:2012-08-29 08:45:43

标签: actionbarsherlock menuitem

我想创建一个菜单项,并在事件发生时稍后显示它。但是,当我稍后在代码上触发menuItemDone.setVisible(true);时,菜单项不会显示。它保持隐藏。知道如何创建隐藏的菜单项并在事件发生时激活吗?菜单在活动中膨胀,片段的作用是:

        @Override
        public void onPrepareOptionsMenu(Menu menu) {
            menuItemDone = menu.findItem(R.id.pi_menu_done);
            if(some condition){
              menuItemDone.setVisible(false);
            }
        }

1 个答案:

答案 0 :(得分:0)

这对我有用..

public boolean onCreateOptionsMenu(Menu menu) 
{
    Menu m_menu = menu;
    m_menu.add(Menu.NONE, Menu.FIRST+1, 0, "one");
    m_menu.add(Menu.NONE, Menu.FIRST+2, 0, "two");
    m_menu.add(Menu.NONE, Menu.FIRST+3, 0, "three");
    m_menu.add(Menu.NONE, Menu.FIRST+4, 0, "four");
    return super.onCreateOptionsMenu(menu);
}

public boolean onPrepareOptionsMenu(Menu menu) 
{
     Menu m_menu = menu;

     if(bTested)
     {
         m_menu.findItem(Menu.FIRST+1).setVisible(false);
         m_menu.findItem(Menu.FIRST+2).setVisible(true);
     }
     else
     {
         m_menu.findItem(Menu.FIRST+1).setVisible(true);
         m_menu.findItem(Menu.FIRST+2).setVisible(false);
     }

     if(bConnected)
     {
         m_menu.findItem(Menu.FIRST+3).setVisible(false);
         m_menu.findItem(Menu.FIRST+4).setVisible(true);
     }
     else
     {
         m_menu.findItem(Menu.FIRST+3).setVisible(true);
         m_menu.findItem(Menu.FIRST+4).setVisible(false);
     }

     return super.onPrepareOptionsMenu(menu);
}