課題
親FragmentでMenuアイコンを表示する必要があるが、 ViewPager内の子FragmentでもMenuアイコンを使用している。
親Fragment側にsetHasOptionsMenuを記述しないと子Fragmentアイコンが重複してされてしまうことがあり、どのようにすればよいか。
対応
- 双方にsetHasOptionsMenu(true);をセットする。
- onOptionsItemSelectedで自Fragment側に対応するアイコンがある場合はreturn trueを、そうでなければreturn falseを返す。
@Override public boolean onOptionsItemSelected(MenuItem item) { switch (item.getItemId()) { case 0: // info Utils.moveToInfo(getFragmentManager()); return true; } // 対応するアイコンがなければfalse return false; }
return false; にすることで処理が子Fragmentに移譲される。
なのでonOptionsItemSelectedの最後は常にreturn falseが良いように思う。
別件でViewPagerの使い方を間違えていたので子アイコンが重複表示される件は別な問題かもしれない。