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

<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

我有第二个片段,它替换了上面的片段并将其放回堆栈:
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 fragment transaction to back stack
fragTrans.addToBackStack(null);

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

稍后我有一些片段替换以前的片段,但是没有放在backback上。
似乎那些没有放在back back上的片段会一直显示在屏幕上,按back按钮对它们没有影响。
那么,如何在我的应用程序中找到那些不在backback上的片段,以及如何从屏幕上删除它们呢?

最佳答案

如何在我的应用程序中找到那些不在backback上的片段
在您的findFragmentById()上呼叫findFragmentByTag()FragmentManager
如何从屏幕上删除它们?
remove()FragmentTransaction一起使用。

10-05 18:24