Remove all fragments from container
Its very simple just loop through all the fragments and remove it
for (Fragment fragment : getSupportFragmentManager().getFragments()) {
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
}
But in case of Navigation Drawer be sure to check it, if you try to remove it you will get error.
for (Fragment fragment : getSupportFragmentManager().getFragments()) {
if (fragment instanceof NavigationDrawerFragment) {
continue;
}
else {
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
}
}
Last but very important be sure to check for null before doing any fragment transactions
for (Fragment fragment : getSupportFragmentManager().getFragments()) {
if (fragment instanceof NavigationDrawerFragment) {
continue;
}
else if (fragment != null) {
getSupportFragmentManager().beginTransaction().remove(fragment).commit();
}
}
It is indeed very simple.
private static void removeAllFragments(FragmentManager fragmentManager) {
while (fragmentManager.getBackStackEntryCount() > 0) {
fragmentManager.popBackStackImmediate();
}
}
In case someone is looking for a code in Kotlin:
supportFragmentManager.apply {
for (fragment in fragments) {
beginTransaction().remove(fragment).commit()
}
popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE)
}