バックスタックにA-> B-> cを持つと、Aが一番上になります。 その時には、Cを上にして、A、Bを順番にスタックに入れておきたいと思っています。この要件では、スタック内に2つのCインスタンスを持つことはできません。問題は、CをポップしてからすべてのA、Bを削除した場合です。バックスタック内のフラグメントの順序をプログラムで変更できる
今、C-> A-> Bを持つことが欲しいです。
これをFragmentManagerのapiで実現することはできますか?
バックスタックにA-> B-> cを持つと、Aが一番上になります。 その時には、Cを上にして、A、Bを順番にスタックに入れておきたいと思っています。この要件では、スタック内に2つのCインスタンスを持つことはできません。問題は、CをポップしてからすべてのA、Bを削除した場合です。バックスタック内のフラグメントの順序をプログラムで変更できる
今、C-> A-> Bを持つことが欲しいです。
これをFragmentManagerのapiで実現することはできますか?
FragmentManager
は、バックスタックの順序を変更したり、スタックの上部にないアイテムを削除することは容易にサポートされません。
独自のバージョンのフラグメントバックスタックの管理を検討してください。
あなたactiviy内のコードの下に置くyeap、Androidからのサポートを組み込みたいと考えています。 – lannyf
フラグメントを隠しておきたい場合は表示してください。
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);
}
ポップバックスタックはフラグメントを破壊します。共有ありがとう! – lannyf
それがスタックと呼ばれる理由があり、私はAPIがあると思いますが、ご使用のケースに応じていない、アプローチが常にありますそれを働かせるために! – varunkr
私はすでにこのスレッドで答えられていると思うhttps://stackoverflow.com/questions/21665346/android-reorder-fragment-backstack –
多分、希望の順序で新しいスタックを作成するか、多分リフレクトを使って実際のものを修正するのでしょうか? – Nanoc