Carlos Robles frikiblog

Capturar boton volver para mostrar menu de confirmación

| 0 comments

Esto no es nada del otro mundo, por lo general no hace falta porque cuando un usuario pulsa el boton atras, lo que quieres es precisamente volver atras, y rápido. Pero a veces hace falta por ejemplo cuando estamos una Activity seria y no queremos que por error el usuario vuelva atrás por pulsar el boton sin querer o lo que sea.

La idea es sobreescribir el método onKeyDown() de la Activity, y detectar la pulsacion del boton concretamente KeyEvent.KEYCODE_BACK

@Override
public boolean onKeyDown(int keyCode, KeyEvent event) {

  if (keyCode == KeyEvent.KEYCODE_BACK) {

    new AlertDialog.Builder(this)
      .setIcon(android.R.drawable.ic_dialog_alert)
      .setTitle("Salir")
      .setMessage("Estás seguro?")
      .setNegativeButton(android.R.string.cancel, null)//sin listener
      .setPositiveButton(android.R.string.ok, new DialogInterface.OnClickListener() {//un listener que al pulsar, cierre la aplicacion
        @Override
        public void onClick(DialogInterface dialog, int which){
          //Salir
          TheActivity.this.finish();
        }
      })
      .show();

    // Si el listener devuelve true, significa que el evento esta procesado, y nadie debe hacer nada mas
    return true;
  }
//para las demas cosas, se reenvia el evento al listener habitual
  return super.onKeyDown(keyCode, event);
}

si programamos para android 2.0, podemos sobreescribir el listener onBackPressed() que ya se llama directamente al pulsar ese boton.

Leave a Reply

Required fields are marked *.

*