2012-02-15 9 views
8

tengo que coger un evento cuando el usuario presiona la tecla atrás y tratar de cerrar el diálogo Tengo un código como esteCómo capturar un evento cuando un usuario despida a un diálogo de alerta pulsando la tecla Backpara en Android

AlertDialog alertDialog = new AlertDialog.Builder(AppNotification.this).create(); 
    alertDialog.setTitle("Caution"); 
    alertDialog.setMessage("Alert"); 
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     finish(); 
    } }); 
    alertDialog.show(); 
} 

Ahora aquí le he dado al usuario una opción, pero supongamos que si presiona la tecla Atrás, entonces tengo que realizar alguna otra acción. ¿Cómo hacerlo?

+0

[Aquí] [1] es una pregunta similar con una respuesta aceptada. [1]: http://stackoverflow.com/questions/2000102/android-override-back-button-to-act-like-home-button – rics

+0

Nop .. Estoy hablando de diálogo de alerta y evento clave de regreso ... sé sobre BackKeyEvent .... –

+0

Era una sugerencia de cómo anular el botón Atrás. Rajeel explica cómo agregarlo a la alerta. – rics

Respuesta

23

Esto le ayudará a

alertDialog.setOnCancelListener(new OnCancelListener() { 
    public void onCancel(DialogInterface dialog) { 
     // Your code ...     
    } 
}); 
0

Crea un botón para administrar el evento de la tecla de retroceso. Ahora, dentro del evento onClick, intente proporcionar el siguiente código.

back_key.setOnClickListener(new OnClickListener() 
{ 

     public void onClick(View v) 
     { 
      // Your Tracking Code 
     } 
}); 
1

Puede capturar el evento llave cuando su alerta aparece unos puso booleano true

AlertDialog alertDialog = new AlertDialog.Builder(AppNotification.this).create(); 
    alertDialog.setTitle("Caution"); 
    alertDialog.setMessage("Alert"); 
    alertDialog.setButton("OK", new DialogInterface.OnClickListener() { 
     public void onClick(DialogInterface dialog, int which) { 
     finish(); 
    } }); 
    isAlertShowing = true; // set to true for alert 
    alertDialog.show(); 
} 

continuación, en caso

@Override 
public boolean onKeyDown(int keyCode, KeyEvent event) 
{ 
 if (keyCode == KeyEvent.KEYCODE_BACK) 
       { 
           if(isAlertShowing) 
           { 
       // perform your task here 
      } 

       } 

       return super.onKeyDown(keyCode, event); 
} 
+0

Esta es una buena manera ... Estaba pensando en los oyentes que el diálogo de alerta tiene ... :) –

1

También hay

alertDialog.setOnDismissListener(dialog -> { /* code goes here */ }); 

que parece estar manejando específicamente el evento de descarte.

Cuestiones relacionadas