Activityでオプションメニューを生成し、Fragmentからもオプションメニューを追加したいと思った時、
Fragment#onCreateOptionsMenu
または
Fragment#onPrepareOptionsMenu
をオーバーライドするが、これだけでは不十分。
Fragment#onCreateView内でsetHasOptionsMenu(true)をコールする必要がある。
//フラグメント内 @Override public View onCreateView(@NonNull LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { : //オプションメニュー利用フラグを立てる setHasOptionsMenu(true); : return view; } @Override public void onCreateOptionsMenu(@NonNull Menu menu, @NonNull MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); //menu.add( do something ); } @Override public void onPrepareOptionsMenu(@NonNull Menu menu) { super.onPrepareOptionsMenu(menu); //フラグメントからmenu.clear()しないこと //menu.add( do something ); } @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { //switch (String.valueOf(item.getTitle())){ switch (item.getItemId()){ //case ???: do something default: return super.onOptionsItemSelected(item); } }