4

私のシンプルなレイアウトにはフラグメントプレースホルダーしかありません:

<FrameLayout
   android:id="@+id/fragment_placeholder"
   android:layout_width="fill_parent"
   android:layout_height="fill_parent"
  />

最初に、このプレースホルダーに最初のフラグメントを追加します。

fragmentTransaction.add(R.id.fragment_placeholder, firstFragment, "first"); //I did not put to backstack

上記のフラグメントを置き換えてバックスタックに置く2番目のフラグメントがあります。

FragmentManager fragMgr = getSupportFragmentManager();
FragmentTransaction fragTrans = fragMgr.beginTransaction();

//initialize an fragment instance
Fragment secondFragment = initSecondFragment(); 

//replace with the fragment 
fragTrans.replace(R.id.fragment_placeholder, secondFragment, "second");

//Add fragment transaction to back stack
fragTrans.addToBackStack(null);

//commit the transaction
fragTrans.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
fragTrans.commit();  

後で、いくつかのフラグメントを前のフラグメントに置き換えますが、 backstack には入れません

バックスタックに配置されていないフラグメントは常に画面に表示されるようで、戻るボタンを押しても影響はありません。

では、アプリのバックスタックにないフラグメントを見つける方法と、それらを画面から削除する方法は?

4

1 に答える 1

1

アプリでバックスタックにないフラグメントを見つける方法

findFragmentById()またはに電話findFragmentByTag()をかけますFragmentManager

それらを画面から削除するには?

とともに使用remove()FragmentTransactionます。

于 2012-04-23T11:13:23.300 に答える