2012-06-02 10 views
6

私は別のものに置き換えているフラグメントを持っていますが、トランザクションをバックスタックに追加しています。両方のフラグメントは、ActionBarSherlockを使用してアクションバーにメニューアイテムを提供します。しかし、私は問題を抱えています。私の2番目のフラグメントでは、アクションバーは最初のフラグメントと2番目のフラグメントのアイテムの両方を表示します。私は2番目のものだけを必要とします。これを達成する方法はありますか?バックスタックフラグメントのメニュー項目を削除するには?

(私もサポートライブラリを使用しています。)

+1

これを把握しましたか? – Hades

+1

あなたはこれを理解しましたか? –

答えて

3

あなたがアクションバーのアイコンを更新したい場合は、アクティブなフラグメントに使用されているメニューを定義するために活動してonCreateOptionsMenu()をオーバーライドすることができます。次に、フラグメントを置き換えた後にinvalidateOptionsMenu()を呼び出して、メニューを再作成します。

ドロップダウンメニューのみを使用している場合は、onPrepareOptionsMenu()をオーバーライドしてメニューに項目を追加/削除できます。

+0

どのメニューを使用するかを定義するにはどうすればよいですか?いくつかのフラグメントを選択する方法はありますか? 'onCreateOptionsMenu'を呼び出すには? – jmgrosen

+0

そのロジックを提供する必要があります。実装によって異なります。インスタンス変数で、どのフラグメントが表示されているかを確認したり、そのフラグメントを追跡したりすることができます。 – Jereld

+2

私はあなたが誤解していると思います。私は 'onCreateOptionsMenu' _in_私のフラグメントを使用しています。私が知る限り、使いたいフラグメントのオプションメニューを選択して選択する方法はありません。 – jmgrosen

0

最初のフラグメントにViewPagerがあり、がFragmentPagerAdapterコンストラクタに渡されている可能性があります。そして、同じgetFragmentManager()を使って2番目のフラグメントに移動しようとしました。

の場合は、getChildFragmentManager()FragmentPagerAdapterに渡します。

関連する問題