Botón Back y Handler en Android

 

Con este método podremos sobreescribir su funcionalidad.

**Si borráramos la linea super.onBackPressed() dejaríamos al botón sin la funcionalidad de volver atrás en esa activity.

override fun onBackPressed() {
    super.onBackPressed()
}

 

Podremos añadirle un Handler al boton Back para customizarlo un poco.

private var exitEnabled = false    

override fun onBackPressed() {
        if(exitEnabled){
            super.onBackPressed()
        }
        exitEnabled = true
        Toast.makeText(this,"Click back again to exit this screen",Toast.LENGTH_SHORT).show()

        Handler().postDelayed(Runnable { exitEnabled = false }, 2000)

}

 

Explicación del Proceso:

La primera vez que pulsa el botón back:

  • exitEnabled estará a false
  • pondrá exitEnabled a true
  • Mandará un Toast con el mensaje «Vuelve a tocar si quiere salir de esta pantalla»
  • Activará un Handler que en 2 segundos volverá a poner exitEnabled a false.

 

*  Si en menos de 2 seg se vuelve a pulsar el botón Back:

  • exitEnabled estará a true y entrara en el condicional.
  • Ejecutará la funcionalidad por defecto del botón Back y volverá al activity anterior.

 

*  Si pasan los 2 seg sin pulsar:

  • Actuará el handler programado y volvera a poner la variable exitEnabled a false.