2016-05-11 16 views
1

バックスタックにA-> B-> cを持つと、Aが一番上になります。 その時には、Cを上にして、A、Bを順番にスタックに入れておきたいと思っています。この要件では、スタック内に2つのCインスタンスを持つことはできません。問題は、CをポップしてからすべてのA、Bを削除した場合です。バックスタック内のフラグメントの順序をプログラムで変更できる

今、C-> A-> Bを持つことが欲しいです。

これをFragmentManagerのapiで実現することはできますか?

+0

それがスタックと呼ばれる理由があり、私はAPIがあると思いますが、ご使用のケースに応じていない、アプローチが常にありますそれを働かせるために! – varunkr

+0

私はすでにこのスレッドで答えられていると思うhttps://stackoverflow.com/questions/21665346/android-reorder-fragment-backstack –

+0

多分、希望の順序で新しいスタックを作成するか、多分リフレクトを使って実際のものを修正するのでしょうか? – Nanoc

答えて

1

FragmentManagerは、バックスタックの順序を変更したり、スタックの上部にないアイテムを削除することは容易にサポートされません。

独自のバージョンのフラグメントバックスタックの管理を検討してください。

あなたactiviy内のコードの下に置く
+0

yeap、Androidからのサポートを組み込みたいと考えています。 – lannyf

0

フラグメントを隠しておきたい場合は表示してください。

0

FragmentManager fragmentManager 


//add fragment A 
fragmentManager = getFragmentManager(); 
FragmentTransaction ft = fragmentManager .beginTransaction(); 
ft.add(resId, fragmentA); 
ft.addToBackstack("tag"); 
ft.commit(); 

//add fragmentB 
fragmentManager = getFragmentManager(); 
FragmentTransaction ft = fragmentManager .beginTransaction(); 
ft.replace(resId, fragmentB); 
ft.addToBackstack("tag1"); 
ft.commit(); 

//add fragmentC 
fragmentManager = getFragmentManager(); 
FragmentTransaction ft = fragmentManager .beginTransaction(); 
ft.replace(resId, fragmentC); 
ft.addToBackstack("tag2"); 
ft.commit(); 

//then try to take back click of B and C fragment here through interface 

//backclick of C 
public void backClick() 
{ 
fragmentManager.popBackStack("tag1",0); 
} 

//back click of B 
public void backClick1() 
{ 
fragmentManager.popBackStack("tag",0); 
} 
+0

ポップバックスタックはフラグメントを破壊します。共有ありがとう! – lannyf

関連する問題