android - 为什么后台堆栈中的零 fragment

标签 android android-layout android-intent android-emulator android-fragments

我的简单布局只有一个 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/

相关文章:

Android:如果最初的 Activity 不是从启动器启动的,则通知开始新 Activity 而不是恢复旧 Activity

Android:当 Activity 通过浏览器链接启动时,onActivityResult Intent 为空

android - 使用 onActivityResult 将数据从一个应用程序传递到另一个应用程序

android - 在 SearchView AutoCompleteTextView 中搜索包含特定字符的文本

android - 根据屏幕密度和屏幕大小以编程方式增加文本大小

java - 如何检查Android中特定网络的数据消耗

android - EditText 在 TextInputLayout 内不可见

Android DataBinding & MVVM - 对不同布局文件夹中的布局文件使用相同的名称

java - 在应该有联系人的 Arraylist 中获取重复项

java - Dagger2 不生成 Daggercomponent 类