7

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

<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 transaction to back stack
fragTrans.addToBackStack(null);

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

//The following log returns me 0 when counting the number of fragments in back stack, why?  
Log.v("nr of fragment in back stack", fragMgr.getBackStackEntryCount()+"");

しかし、バックスタックのフラグメントが0になるのはなぜですか?

4

3 に答える 3

4

ログの前に executePendingTransactions() を試して、コミットが確実に行われるようにします。このような:

fragMgr.executePendingTransactions();
Log.v("nr of fragment in back stack", fragMgr.getBackStackEntryCount()+"");

それが役に立てば幸い...

于 2014-03-01T21:14:08.193 に答える