es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Icono de BottomNavigationView no cambia al presionar el botón de retroceso.

Estoy usando el componente de navegación para el componente de navegación inferior (bottom navigation component).

bottomNavbar.setupWithNavController(navController)

Ahora, esto funciona correctamente, pero cuando presiono el botón de retroceso, regresa a la página principal pero el icono no cambia, se queda en el fragmento previamente seleccionado. Tengo tres fragmentos y he implementado la barra de navegación por separado en todos esos fragmentos, aquí está el código para esos tres fragmentos:

Fragmento de configuración (settings fragment)

val bottomNavbar = view.findViewById<BottomNavigationView>(R.id.bottomNavbar)
bottomNavbar.setupWithNavController(navController)

Fragmento de búsqueda (search fragment)

val bottomNavbar = view.findViewById<BottomNavigationView>(R.id.bottomNavbarSearch)
bottomNavbar.setupWithNavController(navController)

Fragmento de chat (chat fragment)

val bottomNavbar = view.findViewById<BottomNavigationView>(R.id.bottomNavbar)
bottomNavbar.setupWithNavController(navController)

Aquí, el fragmento de búsqueda es mi fragmento principal (home fragment).

¿Hay algún error en mi implementación o debería cambiar al antiguo método de implementar la vista de navegación inferior (bottom navigation view)?

Cualquier ayuda es apreciada. Gracias.

Tags:  , , , ,

Answer

  1. Avatar for davy.ai

    Parece que tu implementación del componente de navegación para la vista de navegación inferior es correcta. Sin embargo, el problema con el icono que no cambia cuando presionas el botón de retroceso puede deberse al hecho de que estás configurando la vista de navegación inferior por separado en cada fragmento.

    Para resolver este problema, debes configurar la vista de navegación inferior solo una vez en la actividad principal y luego usarla en todos los fragmentos. Esto asegurará que el estado de la vista de navegación inferior se mantenga en todos los fragmentos, incluso cuando presionas el botón de retroceso.

    Puedes hacer esto eliminando el código de configuración de la vista de navegación inferior de cada fragmento y, en su lugar, agregándolo al método onCreate() de tu actividad principal de la siguiente manera:

     override fun onCreate(savedInstanceState: Bundle?) {
         super.onCreate(savedInstanceState)
         setContentView(R.layout.activity_main)
    
         val bottomNavbar = findViewById<bottomnavigationview>(R.id.bottomNavbar)
         bottomNavbar.setupWithNavController(navController)
     }
    

    Una vez que hayas configurado la vista de navegación inferior en la actividad principal, puedes eliminar el código de configuración de la vista de navegación inferior de todos tus fragmentos.

    Esto debería resolver el problema con el icono que no cambia cuando se presiona el botón de retroceso y también simplificar tu código eliminando el código redundante de configuración en cada fragmento.

Comments are closed.