2

フラグメントのリストを管理するアクティビティがあります。呼び出すスタックにフラグメントを追加するたびに

 FragmentTransaction ft = getFragmentManager().beginTransaction();
 ft.replace(R.id.layout, fragment, tag);
 ft.addToBackStack(null);

次に、さまざまなフラグメントをスタックに出し入れします。私がそれらを押しのけるとき、私は電話します

  getFragmentManager().popBackStackImmediate();

Fragment がスタックの一番上のフラグメントであることを知る方法を知っている人はいますか? つまり、スタック上に ABC D の順序でフラグメントがあります。D をスタックからポップした場合、C はそれが現在スタックの一番上にあることを知ることができますか?

前もって感謝します!

4

1 に答える 1

0

ft.addToBackStack(null); で、null の代わりに名前を設定します。これを使用して、バックスタック エントリを識別できます。

すなわち

BackStackEntry currentBackStack = getSupportFragmentManager().getBackStackEntryAt(getSupportFragmentManager().getBackStackEntryCount()-1);
currentBackStack.getName();//your identifier

これは、バックスタックの最後のアイテムを取得し、そのバックスタック エントリの名前を取得します。これを各フラグメントで実行し、名前が一致するかどうかを確認できます。

于 2013-07-11T23:00:25.643 に答える