前人未踏の領域へ Androidアプリ開発編

Androidアプリ開発に関する調査メモ置き場。古い記事にはアプリ以外も含まれます。

ViewPagerと親Fragment間でのメニューアイコンの制御

課題

親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の使い方を間違えていたので子アイコンが重複表示される件は別な問題かもしれない。