でいくつかのフラグメントメニュー項目を設定する際に問題が発生し、ActionBar
それを解決する方法を見つけましたが、なぜそれが機能したのかわかりません。
onCreateOptionsMenu
メソッドのmenuxmlファイルからメニュー項目を膨らませた直後に、メニュー項目の表示を変更したかったのです。コードは正常に機能しているようですが、目に見える効果はありません。onCreateOptionsMenu
メソッドでメニューを膨らませながら、メソッドでの表示を変更する問題を解決しましたonPrepareOptionsMenu
。
私が知りたいのは、での可視性の変更がonCreateOptionsMenu
機能しない理由です。
onPrepareOptionsMenu
できないことで何ができるのonCreateOptionsMenu
?
ここで従うべきパターンはありますか?
ありがとう!
念のため、関連するコードを次に示します。
public class MyFragment extends Fragment {
@Override
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
super.onCreateOptionsMenu(menu, inflater);
inflater.inflate(R.menu.my_menu, menu);
// This does not work, compiles and runs fine, but has no visible effect
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
@Override
public void onPrepareOptionsMenu(Menu menu) {
super.onPrepareOptionsMenu(menu);
// This does work
MenuItem someMenuItem = menu.findItem(R.id.some_menu_item);
someMenuItem.setVisible(false);
}
}