Saltar al contenido

Cómo borrar la pila de navegación después de navegar a otro fragmento en Android

Puede que se de el caso de que encuentres algún problema con tu código o trabajo, recuerda probar siempre en un ambiente de testing antes aplicar el código al trabajo final.

Solución:

Primero, agrega attributes app:popUpTo='your_nav_graph_id' y app:popUpToInclusive="true" a la etiqueta de acción.


    

En segundo lugar, navegue hasta el destino, utilizando la acción anterior como parámetro.

findNavController(fragment).navigate(
     SignInFragmentDirections.actionSignInFragmentToUserNameFragment())

Consulte los documentos para obtener más información.

NOTA: Si navega usando el método navigate(@IdRes int resId), no obtendrá el resultado deseado. Por lo tanto, utilicé el método navigate(@NonNull NavDirections directions).

Creo que su pregunta se refiere específicamente a cómo usar Pop Behavior / Pop To / app: popUpTo (en xml)

En la documentación,
Aparece en un destino determinado antes de navegar. Esto extrae todos los destinos que no coinciden de la pila posterior hasta que se encuentra este destino.

Ejemplo (aplicación de búsqueda de empleo simple)
mi start_screen_nav el gráfico es así:

startScreenFragment (start) -> loginFragment -> EmployerMainFragment

                            -> loginFragment -> JobSeekerMainFragment

si quiero navegar a EmployerMainFragment y explota todo incluidostartScreenFragment entonces el código será:

        

si quiero navegar a EmployerMainFragment y explota todo ExcluyendostartScreenFragment entonces el código será:

        

si quiero navegar a EmployerMainFragment y pop loginFragment pero nostartScreenFragment entonces el código será:

        

O

        

En mi caso, necesitaba eliminar todo en la pila posterior antes de abrir un nuevo fragmento, así que usé este código

navController.popBackStack(R.id.fragment_apps, true);
navController.navigate(R.id.fragment_company);

la primera línea elimina la pila posterior hasta que alcanza el fragmento especificado en mi caso, es el fragmento de inicio, por lo que elimina toda la pila posterior por completo, y cuando el usuario vuelve a hacer clic en fragment_company, cierra la aplicación.

¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)



Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *