为什么在backstack中零碎片

我的简单布局只有一个片段占位符:

 

我首先在这个占位符中添加第一个片段

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

我有一个第二个片段 ,它取代上面的片段并将其放回到堆栈

 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个片段,为什么???

在Log之前尝试执行executePendingTransactions()以确保提交它。 喜欢这个:

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

希望能帮助到你…

我不确定答案……可能需要等待添加片段吗? 试着算一下这个

  new Handler().postDelayed(new Runnable() { @Override public void run() { Log.v("nr of fragment in back stack", fragMgr.getBackStackEntryCount()+""); } },50);