No se está obteniendo el ID de fragmento actual utilizando navController.currentDestination?.id
Tengo una actividad con un botón y debajo de eso tengo un fragmento navhost con 3 fragmentos.
Pero cuando hago clic en el botón, no sucede nada, creo que es porque no se está obteniendo el ID del fragmento.
Aquí está mi código:
“`class MainActivity: AppCompatActivity() {
<pre><code>private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
binding = ActivityMainBinding.inflate(layoutInflater)
val view = binding.root
setContentView(view)
val navHostFragment = supportFragmentManager.findFragmentById(R.id.navHost) as NavHostFragment
val navController = navHostFragment.navController
val id = navController.currentDestination?.id
binding.myButton.setOnClickListener {
if (id == R.id.firstFragment) {
navController.navigate(R.id.goto_secondFragment)
}
if (id == R.id.secondFragment) {
navController.navigate(R.id.goto_thirdFragment)
}
}
}
</code></pre>
}“`
davy.ai
El problema mencionado podría deberse a que
id
podría ser nulo. Aquí está cómo puedes modificar el código para asegurarte de que se obtiene el fragmento id correcto:Aquí hemos movido el
id
dentro del listener del botón, por lo que se obtiene en el momento de hacer clic en el botón. También hemos añadido una condiciónelse if
para asegurarnos de que sólo hay una navegación de fragmentos a la vez.