2012-02-15 12 views
8

muszę złapać zdarzenie, kiedy użytkownik naciśnie przycisk Wstecz i spróbuj zamknąć okno mam kod jak poniżejJak przechwycić zdarzenie, gdy użytkownik odwołuje się okno dialogowe z ostrzeżeniem, naciskając backKey w Androidzie

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(); 
} 

Teraz dałem użytkownikowi opcję, ale przypuśćmy, że jeśli on naciśnie klawisz Back, to muszę wykonać inną akcję. Jak to zrobić?

+0

[tutaj] [1] to podobne pytanie z zaakceptowaną odpowiedzią. [1]: http://stackoverflow.com/questions/2000102/android-override-back-button-to-act-like-home-button – rics

+0

Nope .. mówię o dialogu i ostrzegania Zdarzenie back key ... wiem o BackKeyEvent .... –

+0

To była wskazówka, jak zastąpić przycisk Wstecz. Rajeel wyjaśnia, jak dodać go do ostrzeżenia. – rics

Odpowiedz

23

Pomoże Ci

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

Utwórz przycisk do zarządzania wydarzeniem z kluczem wstecznym. Teraz wewnątrz zdarzenia onClick spróbuj podać poniższy kod.

back_key.setOnClickListener(new OnClickListener() 
{ 

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

Można uchwycić tylną kluczową imprezę gdy alert pojawia się ustawić jakąś wartość logiczną 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(); 
} 

następnie w razie

@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

To jest fajny sposób ... Myślałem o każdym słuchaczu, który ma okno dialogowe alertu ... :) –

1

Istnieje również

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

który wydaje się obsługiwać konkretnie zdarzenie odwołania.

Powiązane problemy