Как очистить фрагмент в андроиде

Привет, как очистить фрагмент обратно стека, используя ниже логику, он не работает …

for(int i = 0; i < mFragmentManager.getBackStackEntryCount(); ++i) { mFragmentManager.popBackStack(); } 

Помоги мне..

Solutions Collecting From Web of "Как очистить фрагмент в андроиде"

Попробуй это

 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 . Например

 Fragment fancyFragment = new FancyFragment(); fragmentTransaction.replace(R.id.content_container, fancyFragment, "myfragmentag"); fragmentTransaction.addToBackStack("myfancyname"); 

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); 

Довольно объяснительно; Вы просто получаете первую запись, получаете свой идентификатор, а затем добавляете все до и включая запись с этим идентификатором.