2011-08-18 4 views
18

ho una finestra di avviso come questo:Come impedire una finestra di avviso Come Chiuso da pulsante Indietro

AlertDialog.Builder oyunaBaslaDialog = new AlertDialog.Builder(this); 
    oyunaBaslaDialog.setMessage("A Takımı"); 
    oyunaBaslaDialog.setNeutralButton("Başla!", 
      new DialogInterface.OnClickListener() { 
       public void onClick(DialogInterface arg0, int arg1) { 
        oyunOyna(); 
       } 
      }); 
    oyunaBaslaDialog.show(); 

Questa finestra di dialogo è mostrata nella metodo onCreate. E voglio solo che sia chiuso dal pulsante su di esso. Ma Hardware Back Button può anche chiudere questa finestra di dialogo senza l'azione del dialog eseguita.

Non voglio che il pulsante Indietro chiuda questa finestra di dialogo, cosa posso fare?

risposta

10

Implementare setOnKeyListener e rilevare KeyEvent.KEYCODE_BACK. Se si restituisce true in questo metodo, la finestra di dialogo non verrà chiusa.

+4

In questo modo puoi effettivamente fare ciò che vuoi quando l'utente preme il pulsante Indietro nella finestra di dialogo. – CommonMan

+0

Questa era l'unica soluzione utile per me perché volevo aggiungere un'azione al pulsante Indietro. – Roel

58

Uso Dialog.setCancelable():

Imposta se questa finestra è cancellabile con il tasto Indietro.

Nel codice questo sarebbe:

oyunaBaslaDialog.setCancelable(false); 
+0

fantastico grazie! – Batuhan

+1

Ma cosa succede se si desidera semplicemente decidere se il tasto Indietro chiude la finestra di dialogo in base a determinate condizioni? – aggregate1166877

+8

Se la finestra di dialogo è all'interno di DialogFragment, è necessario chiamare setCancelable (false) per il DialogFragment altrimenti Back chiuderà il frammento. Link ai documenti: http://developer.android.com/reference/android/app/DialogFragment.html#setCancelable%28boolean%29 – Ognyan

0

c'è un metodo chiamato, bulder.setCancelable() .In questo set predefinito annullabile 'vero' .override con,

bulder.setCancelable(false) 
Problemi correlati