如何清除android中的碎片背景
嗨如何清除片段回到堆栈使用下面的逻辑它不工作…
for(int i = 0; i < mFragmentManager.getBackStackEntryCount(); ++i) { mFragmentManager.popBackStack(); } 帮我..
尝试这个
 mFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
上面的回答几乎是正确的,但是你需要在回退列表的后面加上一个警戒,因为它可以是空的:
 private void clearBackStack() { FragmentManager manager = getSupportFragmentManager(); if (manager.getBackStackEntryCount() > 0) { FragmentManager.BackStackEntry first = manager.getBackStackEntryAt(0); manager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE); } } 
 while (getSupportFragmentManager().getBackStackEntryCount() > 0){ getSupportFragmentManager().popBackStackImmediate(); } 
 一种方法是标记 backstack以及何时清除它 
 mFragmentManager.popBackStack("myfancyname", FragmentManager.POP_BACK_STACK_INCLUSIVE); 
 其中"myfancyname"应该与addToBackStack所使用的string相addToBackStack 。 例如 
 Fragment fancyFragment = new FancyFragment(); fragmentTransaction.replace(R.id.content_container, fancyFragment, "myfragmentag"); fragmentTransaction.addToBackStack("myfancyname"); 
  backstack的名称和片段的标签名称可以相同,但在这方面没有限制 
从文档
如果已设置,并且提供了返回堆栈条目的名称或ID,则将使用所有匹配的条目,直到find不匹配的条目或达到堆栈的底部为止。 否则,直到但不包括该条目的所有条目都将被删除。
如果你不想为你的backstack使用一个名字,你可以使用第一个参数
  mFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); 
这有点晚了,但我自己也有这个问题。 你可以做:
 FragmentManager manager = getFragmentManager(); FragmentManager.BackStackEntry first = manager.getBackStackEntryAt(0); manager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE); 
相当自我解释; 你只要得到第一个条目,得到它的ID,然后popup一切,包括与该ID的条目。
我见过的最好的select是在这里。
  int count = getSupportFragmentManager().getBackStackEntryCount(); if (count > 0) { getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE); }