为什么在堆栈中零片段
我简单布局只有一个片段占位符:为什么在堆栈中零片段
<FrameLayout
android:id="@+id/fragment_placeholder"
android:layout_width="fill_parent"
android:layout_height="fill_parent"
/>
我首先是1片段添加到这个占位符:
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()+"");
但我最终与片段在回栈,为什么?
我不知道在回答...可能需要等待片段被添加? 尝试获得由日志在此之前
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
Log.v("nr of fragment in back stack", fragMgr.getBackStackEntryCount()+"");
}
},50);
非常感谢!这对我来说是 – 2015-03-14 00:01:26
你不应该使用计时器来听这种类型的变化......如果事务处理时间超过50ms会怎样? – 2015-08-31 13:36:05
@ tf.alves我知道这是肮脏的解决方案,但它适用于我。可能你有更好的建议? – dooplaye 2015-10-10 18:41:12
尝试executePendingTransactions()计算,以确保提交它发生。 像这样:
fragMgr.executePendingTransactions();
Log.v("nr of fragment in back stack", fragMgr.getBackStackEntryCount()+"");
希望它可以帮助...
你提交的事务? – Selvin 2012-04-20 14:00:55
@Selvin,是的,我已经提交了交易,请在我的帖子中查看我更新的代码。 – 2012-04-20 14:05:03
我也看到这个。你设法解决它吗? – span 2012-08-03 13:30:28