4

2つのフラグメントを持つレイアウトがあり、どちらのフラグメントも独自のアクションバーを持ち、それぞれに独自のアクションアイテムとメニューがあります。私のアプリがランドスケープモードで、両方のフラグメントが画面に表示されている場合、フレームワークは「右」(または第2のフラグメント)にアクションバーを表示するように見えます。つまり、左側のフラグメント(第1のフラグメント)にアクション項目とメニューオプションがありません。2つのフラグメントを持つアクションバーを扱う

アプリがポートレートモードのときはすべて正常に機能するので、フラグメントが両方とも表示されているときにフラグメントを処理する必要があるかどうかはわかりません。ありがとう。フラグメント1では

:フラグメント2では

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

私はアクションバーにメニュー項目を追加するには、このコードを使用しています私の断片のそれぞれにおいて

EDIT

@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つの問題を修正したが、別の問題を壊した。

+0

この質問への回答を提供するためのポストがあります。http://www.grokkingandroid.com/adding-action-items-from-within-fragments/ – firebear

+0

[アクションバーチュートリアルの断片](http:// v4all123.blogspot.in/2013/07/simple-fragments-tutorial.html)。 – Gunaseelan

答えて

9

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

+0

OPをチェックし、いくつかのコードを追加しましたが、onCreateOptionsMenuの両方のフラグメントでメニューレイアウトを膨らませています。アクションバーは両方のメニューを表示してはいけませんか? –

+0

両方で 'setHasOptionsMenu(true)'を呼び出しましたか? –

+0

さて、ポートレートモードでは、フラグメントが別の画面にあると、各フラグメントのメニューが正しく表示されるためです。また、私はActionBarSherlockを使っていますが、それが違いを生むかどうかはわかりません。 –

関連する問題