ToolbarのメニューなどでMenuを動作的に変更したい。
例えば、ActivityとFragmentの構成だとする。
そして、FragmentからActivityのメニューを操作したい場合、以下のように
menuTypeでメニューを選択できるようにする。
xxxActivity
@Override
public boolean onCreateOptionsMenu(Menu menu) {
switch (menuType) {
case MENU_TYPE_A:
getMenuInflater().inflate(R.menu.main_menu_a, menu);
break;
case MENU_TYPE_B:
getMenuInflater().inflate(R.menu.main_menu_b, menu);
break;
case MENU_TYPE_C:
getMenuInflater().inflate(R.menu.main_menu_c, menu);
break;
default:
break;
}
return super.onCreateOptionsMenu(menu);
}
@Override
public boolean onOptionsItemSelected(MenuItem item) {
switch (item.getItemId()) {
case R.id.hoge_menu:
// 何らかの処理
return true;
}
return false;
}
xxxFragment
Fragmentでは、以下のようにセットするだけで、xxxActivityのonCreateOptionsMenu()が呼ばれるので動的なメニュー表示が可能になる。
if (◯) {
xxxActivity.menuType = 1;
}
else if (◯◯) {
xxxActivity.menuType = 2;
}
else {
xxxActivity.menuType = 3;
}
getActivity().getFragmentManager().invalidateOptionsMenu();