4

2 つのフラグメントを含むレイアウトがあり、両方のフラグメントに独自のアクション バーがあり、それぞれに独自のアクション アイテムとメニューがあります。アプリが横向きモードで、両方のフラグメントが画面に表示されている場合、フレームワークが「右側」(または 2 番目のフラグメント) にアクション バーを表示することを選択しているように見えます。これは、左側のフラグメント (1 番目のフラグメント) を意味します。 ) にはアクション アイテムとメニュー オプションがありません。

アプリが縦向きモードの場合はすべて正常に動作するため、フラグメントが両方とも表示されている場合にフラグメントを処理する必要があるかどうかはわかりません。ありがとう。

編集

各フラグメントで、次のコードを使用してメニュー項目をアクション バーに追加しています。

フラグメント 1:

    @Override
    public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
        inflater.inflate(R.menu.fragment_menu_1, menu);
        super.onCreateOptionsMenu(menu, inflater);
    }

フラグメント 2:

    @Override
    public void onCreateOptionsMenu(final Menu menu, final MenuInflater inflater) {
        inflater.inflate(R.menu.fragment_menu_2, menu);
        super.onCreateOptionsMenu(menu, inflater);
    }

アップデート:

setRetainInstance(true)メニューが更新されない原因は明らかに使用中です。デバイスが回転した場合に例外をスローしていた AsyncTask があるため、それを使用していました。だから私は1つの問題を修正しましたが、別の問題を壊しました.

4

1 に答える 1

9

あなたはこれについて間違って考えていると思います。アクション バーはフラグメントの一部として表示されるのではなく、実際にはアクティビティの一部として表示されます。を介してアクション アイテムを提供することをフラグメントで宣言するとsetHasOptionsMenu(true)、すべてがアクション バーの一部として表示されます。をオーバーライドすることで、適切なアクションを実行できますonOptionsItemSelected(MenuItem item)

于 2012-04-10T21:49:00.533 に答える