provide - Cómo borrar Fragment backstack en android
provide back navigation android (6)
Esto es un poco tarde pero yo mismo tuve este problema. Tu puedes hacer:
FragmentManager manager = getFragmentManager();
FragmentManager.BackStackEntry first = manager.getBackStackEntryAt(0);
manager.popBackStack(first.getId(), FragmentManager.POP_BACK_STACK_INCLUSIVE);
Bastante auto explicativo; usted acaba de obtener la primera entrada, obtener su identificación, y luego mostrar todo hasta e incluyendo la entrada con esa identificación.
hola cómo borrar el fragmento de la pila de nuevo estoy usando la lógica de abajo no funciona ...
for(int i = 0; i < mFragmentManager.getBackStackEntryCount(); ++i) {
mFragmentManager.popBackStack();
}
ayuadame..
La mejor opción que he visto está aquí.
int count = getSupportFragmentManager().getBackStackEntryCount();
if (count > 0) {
getSupportFragmentManager().popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
}
La respuesta anterior es casi correcta, pero necesitas un guardián alrededor de la lista de fragmentos, ya que puede estar vacía:
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);
}
}
Prueba esto
mFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
Una forma es etiquetar la backstack
y cuando quieras backstack
mFragmentManager.popBackStack("myfancyname", FragmentManager.POP_BACK_STACK_INCLUSIVE);
donde el "myfancyname"
debe coincidir con la cadena que utilizó con addToBackStack
. P.ej
Fragment fancyFragment = new FancyFragment();
fragmentTransaction.replace(R.id.content_container, fancyFragment, "myfragmentag");
fragmentTransaction.addToBackStack("myfancyname");
el backstack
la backstack
y el nombre de la etiqueta del fragmento pueden ser los mismos, pero no hay restricciones en este aspecto
De la documentación
Si se establece, y se ha proporcionado el nombre o ID de una entrada de la pila posterior, todas las entradas coincidentes se consumirán hasta que se encuentre una que no coincida o se llegue a la parte inferior de la pila. De lo contrario, todas las entradas hasta, pero sin incluir, esa entrada serán eliminadas.
si no quieres usar un nombre para tu backstack, puedes pasar el uso de un primer parámetro
mFragmentManager.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
while (getSupportFragmentManager().getBackStackEntryCount() > 0){
getSupportFragmentManager().popBackStackImmediate();
}