0

我已經使用Fragment實現了ActionBar導航。在我的應用程序中,我有一個活動,其餘部分在碎片中。在我的MainActivity中,我正在實現像這樣的菜單。從操作欄中刪除操作按鈕

@Override 
    public boolean onCreateOptionsMenu(Menu menu) { 
     getMenuInflater().inflate(R.menu.main, menu); 
     return true; 
    } 

兩個片段使用導航抽屜和他們尊重的片段我充氣菜單按鈕來排序項目。

@Override 
    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
     super.onCreateOptionsMenu(menu, inflater); 
     inflater.inflate(R.menu.sort_button_shops, menu); 
    } 

現在的問題是,如果我打開片段1它完美的作品。當我打開片段2時,它顯示2個按鈕進行排序,一個來自片段1,另一個來自片段2.

我試圖隱藏按鈕,但它沒有奏效。 任何幫助將被讚賞。 謝謝

+1

我做一些的MenuItems在我的活動的聲明部分(我想隱藏/顯示的按鈕)。我將它們分配在onCreateOptionsMenu中。然後,在代碼中,我使用'myItem.setVisible(true | false);'。很簡單。 –

+0

我已經試過這個,它不工作。我很驚訝爲什麼在片段2中顯示的片段1中添加了菜單。由於每個片段都有自己的菜單。 – user3789702

+0

我知道這是有點老,但看到我的答案。 – tricknology

回答

0

當你吹一個新的菜單要添加新項目,以老Menu對象,這可能並非您的本意。

試試這個:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    menu.removeItem(R.id.your_menu_item); 
    getMenuInflater().inflate(R.menu.main, menu); 
return true; 
} 
0

嘗試使用onResume()的片段。

MenuItem item = (MenuItem) findViewById(R.menu.activity_main); 
item.setVisible(false); 
this.invalidateOptionsMenu(); 
+0

this.invalidateOptionsMenu();它需要Api 11,我需要它爲Api 10以及。 – user3789702

+0

它不在Api 11中工作 – user3789702

+0

嘗試使用supportInvalidateOptionsMenu()獲取api級別<11 –