我在有幾個片段的活動中使用drawerlayout
。通過點擊導航項目,我切換片段是這樣的:Android:onCreateOptionsMenu被調用,但操作欄菜單沒有更新片段
switch (index) {
case 0:
if (checkinFragment == null) {
checkinFragment = new CheckinFragment();
ft.add(R.id.main_container, checkinFragment, "0");
} else {
ft.show(checkinFragment);
}
break;
case 3:
if (jianGuanFragment == null) {
jianGuanFragment = new JianGuanFragment();
ft.add(R.id.main_container, jianGuanFragment, "3");
} else {
ft.show(jianGuanFragment);
}
break;
}
ft.commitAllowingStateLoss();
每個片段在其onCreateOptionsMenu(Menu menu, MenuInflater inflater)
方法膨脹不同的菜單資源文件。
步驟:a。
1.當第一次進入在checkinFragment
菜單中示出了活性(好)
2.然後切換到jianGuanFragment
,在jianGuanFragment
菜單被顯示(此外右)
3.但是,切換回第一個片段(checkinFragment
)時,操作欄菜單不會更新。展示菜單仍然是jianGuanFragment
中的菜單。那就是問題所在。
而從日誌中我知道onCreateOptionsMenu
在顯示片段中被稱爲每次我切換到它。也就是說:
onCreateOptionsMenu被調用,但不更新操作欄菜單。
任何人都可以幫到我嗎?非常感謝。
EDIT 1:添加代碼在onCreateOptionsMenu:
(1)在checkinFragment
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
LogUtils.e("TAG", "CheckinFragment onCreateOptionsMenu");
menu.clear();
inflater.inflate(R.menu.menu_setting, menu);
}
(2)在jianGuanFragment
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
LogUtils.e("TAG", "JianGuanFragment onCreateOptionsMenu");
menu.clear();
inflater.inflate(R.menu.menu_jianguan, menu);
}
編輯2:我使用工具欄上,沒有舊的操作欄。
@ unrealsoul007我已經在每個片段的'onActivityCreated'中設置了setHasOptionsMenu(true)。我已經嘗試將它寫入片段的onCreateOptionsMenu中,但它不起作用。 – hanswim
你可以嘗試使用onPrepareOptionsMenu()在片段 – Raghavendra