2012-10-11 42 views
3

我正在開發一些Android應用程序,並且我有兩個選項卡的ActionBar。當用戶選擇第二個選項卡時,我需要在ActionBar上顯示2個圖標。我有以下代碼:如何動態更改MenuItem的可見性?

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    getMenuInflater().inflate(R.menu.activity_main, menu); 
    mOptionsMenu=menu; 
    menu.getItem(0).setVisible(false); 
    menu.getItem(1).setVisible(false); 
    return true; 
} 

    public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
     mViewPager.setCurrentItem(tab.getPosition()); 
     if (tab.getPosition()==1) { 
     mOptionsMenu.getItem(0).setVisible(true); 
     mOptionsMenu.getItem(1).setVisible(true); 
} 
    } 

但是,此代碼不起作用。請告訴我,我怎樣才能滿足我的需求?

回答

10

你需要設置在onPrepareOptionsMenu()可見菜單。你可以改變你的代碼如下:

private boolean menuShow = false; 

public void onTabSelected(ActionBar.Tab tab, FragmentTransaction fragmentTransaction) { 
    mViewPager.setCurrentItem(tab.getPosition()); 
    if (tab.getPosition()==1) { 
     menuShow = true; 
    } 
} 


public boolean onPrepareOptionsMenu(Menu menu) { 
    if(menuShow){ 
    mOptionsMenu.getItem(0).setVisible(true);  
    mOptionsMenu.getItem(1).setVisible(true); 
    } 
    return true; 
} 
+0

爲我工作,謝謝! –