0

我已經讓我們假設三個片段,並希望顯示單獨的選項菜單爲每個片段以及共同的菜單形式的基本acticity。我在片段中的onCreateView()中設置了setHasOptionMenu(true),並覆蓋onOptionItemCreated()。它成功顯示菜單。現在我想隱藏/刪除從片段添加的菜單作爲片段菜單是可見的片段B以及它只添加新的菜單購買並沒有刪除片段摧毀舊的。請幫忙!隱藏選項菜單創建從片段與setHasOptionMenu(true)

回答

0

發生這種情況是因爲onCreateView()未被再次調用,我們也不能依賴onResume(),因爲對於片段而言,它與活動生命週期緊密相關。針對這種情況的簡單攻擊可以是使用replace代替add使用碎片事務。這將強制片段娛樂,因此應該在這裏工作。

[編輯]

或者,你可以嘗試把菜單代碼片段onResume()嚴格使用replace()代替add()當片段交易無處不在。

+0

我已經使用替代方法但不富有成效。 –

+0

@ZeeshanAhmed我做了一個示例項目來測試它,它爲我工作。看到我上面的編輯。 – Shaishav

+0

你介意分享一下你的代碼嗎?正如我嘗試過一樣,但無法做到這一點。 –

1

在你想隱藏一些項目的Fragment,請執行下列操作 -

@Override 
public void onPrepareOptionsMenu(Menu menu) { 
    MenuItem item=menu.findItem(R.id.action_search); 
    item.setVisible(false); 
    ... 
} 
0

的活動:

@Override 
public boolean onCreateOptionsMenu(Menu menu) { 
    super.onCreateOptionsMenu(menu); 
    menu.findItem(R.id.action_id_here).setVisible(false); 

    return true; 
} 

對於片段:

@Override 
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { 
    super.onCreateOptionsMenu(menu, inflater); 
    menu.findItem(R.id.action_id_here).setVisible(false); 
}