あるFragmentを持つActivityがあるとする。
Menuの追加処理は必ずしもActivityだけではなくてFragment側でもonCreateOptionsMenuをオーバライドしてやればできる。
これを利用すると、Fragmentの切り替え時にそのFragmentに合ったMenuを表示することができる。
そのときの注意点。
ダメな例
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); inflater.inflate(R.menu.main, menu); }
正しい例
public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) { super.onCreateOptionsMenu(menu, inflater); if(!menu.hasVisibleItems()) inflater.inflate(R.menu.main, menu); }
menu.hasVisibleItems()で既にmenuがあることを確認しないと、FragmentがaddされたときにMenuがどんどん増えてしまう。
addする前にremoveしていれば既に追加したMenuは消えてくれるが、removeせずにaddを呼ぶ場合などは注意が必要。
0 件のコメント:
コメントを投稿