我的简单布局只有一个 fragment 占位符:
<FrameLayout
android:id="@+id/fragment_placeholder"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
我首先向这个占位符添加一个第一个 fragment :
fragmentTransaction.add(R.id.fragment_placeholder, firstFragment, "first"); //I did not put to backstack
我有一个第二个 fragment ,它替换了上面的 fragment 并将它放到后台堆栈:
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 fragment ,为什么???
最佳答案
在 Log 之前尝试执行 executePendingTransactions() 以确保提交发生。 像这样:
fragMgr.executePendingTransactions();
Log.v("nr of fragment in back stack", fragMgr.getBackStackEntryCount()+"");
希望对你有帮助
关于android - 为什么后台堆栈中的零 fragment ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10247664/