¿Cómo hago para que un botón en pantalla actúe de la misma manera que un botón Atrás físico/virtual? Kotlin, no Java por favor. Sé que esto es solo duplicar una función, pero este es precisamente mi objetivo aquí.
Estoy tratando de aprender los conceptos básicos de Kotlin para aplicaciones de Android (Android Studio), para satisfacer mi curiosidad y tal vez también hacer algo bueno para los pacientes con enfermedades neurodegenerativas. Gracias a la ayuda de Internet, obtuve un botón de actividad estándar, ir a nuevo (ejemplo a continuación), pero estoy atascado en ese.
val button: Button = findViewById(R.id.button_main_doccont) button.setOnClickListener { val intent = Intent(this, page_contact_doctor::class.java) startActivity(intent) }Llamaría a .navigateUp() o .popBackStack() en el NavController .
Si no tiene una referencia al NavController, puede obtenerla.
En Kotlin, dentro de un Fragmento puedes simplemente hacer
button.setOnClickListener { findNavController().navigateUp() // or findNavController().popBackStack() }De lo contrario, necesita una referencia al fragmento desde el que está navegando
button.setOnClickListener { fragment.findNavController().navigateUp() // or fragment.findNavController().popBackStack() } Tenga en cuenta que popBackStack y navigateUp tienen una semántica diferente.
Documentos para popBackStack
Intenta abrir la pila trasera del controlador. Análogo a cuando el usuario presiona el botón Atrás del sistema cuando el host de navegación asociado tiene el foco.
Devuelve: verdadero si se extrajo la pila y el usuario ha navegado a otro destino; de lo contrario, falso
Documentos para navigateUp hacia arriba
Intenta navegar hacia arriba en la jerarquía de navegación. Adecuado para cuando el usuario presiona el botón "Arriba" marcado con una flecha hacia la izquierda (o inicio) en la esquina superior izquierda (o inicio) de la interfaz de usuario de la aplicación. El comportamiento previsto de Arriba difiere de Atrás cuando el usuario no llegó al destino actual desde la propia tarea de la aplicación. por ejemplo, si el usuario está viendo un documento o enlace en la aplicación actual en una actividad alojada en la tarea de otra aplicación donde el usuario hizo clic en el enlace. En este caso, la actividad actual (determinada por el contexto utilizado para crear este NavController) finalizará y el usuario será llevado a un destino apropiado en esta aplicación en su propia tarea.
Devuelve: verdadero si la navegación fue exitosa, falso en caso contrario
¿No puedes simplemente llamar a onBackPressed() en la Activity ? Eso haría exactamente lo mismo que presionar el botón físico ATRÁS.