remove provide popbackstack from activity android android-fragments

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