2016-06-18 11 views
0

私は2つのフラグメント(Frag A、Frag B)をそれぞれ別のコンテナID(R.id.containerA、R.id.containerB)を持つマルチペインで表示しています。第一のフラグメントのための特定のフラグメントをバックスタックから削除する

私の画面の流れがあるFragA-> FragA1-> FragA2

第二のフラグメントのための私の画面フローがFragB-> FragB1

私はbackstackする各フラグメントを追加しています。だから私はバックスタックで5つの断片を持っています。ナビゲーションの

実際の順序は、私は戻るボタンを押したときに今、私はFragB1がbackstack代わりFragA2のから最初に飛び出しことにしたいFragA-> FragB-> FragA1-> FragB1-> FragA2

です。フラグメントはスタックに保持されていますが、この特定のマルチペインのシナリオをどのように処理するのかはわかりますか?

この投稿に記載されているような反射を使用する必要がありますか? Android Reorder Fragment Backstack

他の代替手段はありますか?

答えて

-1

FragA2の代わりにFragB1を取得したい場合は、フラグメントの名前を取得して確認し、フラグメントの名前がFragA2の場合はもう一度元に戻ってください。次のコードを使用して名前を取得できます。

FragmentManager.BackStackEntry backEntry=getFragmentManager().getBackStackEntryAt(getActivity().getFragmentManager().getBackStackEntryCount()-1); 
String str=backEntry.getName(); 
+0

名前を取得した後、Frag B1をポップすることは可能ですか?バックスタッキングはLIFOなので、A2もポップされると思う。 – RisingUp

+0

定義によると、yes A2は、あなたがB1をポップする時までにポップされていました。しかし、あなたがそれを参照している場合は、A2をスタックに戻すことができます。 – ucsunil

関連する問題