¿Cómo encontrar un fragmento en el backstack para navegar hacia él sin recrearlo?
Estoy utilizando el componente de navegación. Mi fragmento principal se abre por defecto. Cuando navego hacia otro fragmento en mi barra de navegación inferior, puedo hacer clic en un elemento de la vista en cuadrícula y debería volver a mi fragmento principal y enviar argumentos. El problema es que está recreando mi fragmento principal, por lo que mi modelo de vista de este fragmento también se recrea. Estoy utilizando este método para navegar haciendo clic en un elemento:
findNavController().navigate(NavGraphDirections.actionGlobalMainFragment(schemeId))
¿Puedo encontrar este fragmento de alguna manera en la pila de retroceso (porque está en ella) y navegar a él sin recrearlo y enviando argumentos?
davy.ai
Sí, puedes utilizar el método
findFragmentByTag
para encontrar un fragmento en la pila de fragmentos por su etiqueta y luego navegar a él sin recrearlo.Primero, debes agregar una etiqueta a tu fragmento principal cuando se crea por primera vez y se agrega a la pila de fragmentos. Puedes hacer esto pasando un parámetro de etiqueta al método
addToBackStack
:Luego, para navegar de regreso al fragmento principal sin recrearlo, puedes usar el método
findFragmentByTag
para obtener una referencia al fragmento y verificar si ya está agregado a la pila de fragmentos:Este código verifica si el fragmento principal ya está agregado a la pila de fragmentos, y si es así, navega a él sin recrearlo. Si no está agregado, recrea el fragmento y lo agrega a la pila de fragmentos con la misma etiqueta.