2010-08-30 2 views
11

Ich verwendete OnKeyDown-Funktion in der Aktivität ..... aber wenn Zurück-Taste Schaltfläche angeklickt wird, bricht es zunächst das Dialogfeld und geht zu unserer Aktivität. ..ich wollen beide entweder beide Aktivität und Dialogfeld geschlossen, wenn den zurück-Button klicken oder die zurück-Taste deaktivieren, wenn das Dialogfeld angezeigt wird ...Wie Sie die Zurück-Schaltfläche deaktivieren, wenn das Warnfeld auf dem Bildschirm ist

kann eine beliebige keine Lösungen für diese vorschlagen ....

Vielen Dank im Voraus,

aktualisieren

Hallo Danke für deine Antwort. Die progressDialog mit .setCancelable(false); funktioniert gut.

Aber hier möchte ich andere Sache. Wenn der Fortschrittsdialog läuft, drücke ich die BACK-Taste und ich möchte einen Alarmdialog anzeigen, damit der Benutzer benachrichtigt werden kann, dass der Fortschritt ausgeführt wird.

Gibt es eine Lösung?

Bitte helfen Sie mir.

Vielen Dank im Voraus.

Antwort

58

Haben Sie versucht, seine setCancelable() Eigenschaft auf false

So etwas wie diese dies in Ihrem Fall helfen Mai sein

progressDialog.setCancelable(false); 
+10

- das funktioniert auch mit AlertDialog ... nur für den Fall, dass jemand es wissen muss. – dell116

2

Einstellung:

@Override 
    public boolean onKeyDown(int keyCode, KeyEvent event) { 
     if (keyCode == KeyEvent.KEYCODE_BACK) { 
      // Show your Alert Box here 
     } 
     return false; 
    } 
+0

Danke für Ihre Antwort. Das Problem war lange zurück. Ich werde versuchen, wenn ich Zeit bekomme. – gsmaker

+0

nur zu spät zu sein als nie :) –

0

Ich will nur @MoJo verbessern Antwort

alertDialog.setOnKeyListener(new DialogInterface.OnKeyListener() { 

     @Override 
     public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
       //Your handler 


       return false; 
     } 
}); 
+0

Dann könnten Sie meine Antwort bearbeitet haben –

0

Persönlich war eine sauberere Lösung, die LoginActivity vor dem Starten der Absicht zu beenden, anstatt Flags im Bündel der neuen Aktivität zu setzen oder Methoden zu überschreiben. Versuchen Sie Folgendes, wenn Login Ihre Anmeldeaktivität ist und Home die erste Aktivität ist, nachdem Sie sich erfolgreich im Benutzer angemeldet haben.

finish(); 
Intent intent = new Intent(Login.this, Home.class); 
intent.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK); 
startActivity(intent); 
0

„Ich mag beide entweder beide Aktivität und Dialogfeld geschlossen“

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { 
    @Override 
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
    finish(); 
    return true; 
    } 
}); 

„oder die Zurück-Taste deaktivieren, wenn das Dialogfeld angezeigt wird“ blockiert Dies kann wieder von Dialog gehen. Wenn es dynamisch erstellen, hinzufügen:

dialog.setOnKeyListener(new DialogInterface.OnKeyListener() { 
    @Override 
    public boolean onKey(DialogInterface dialog, int keyCode, KeyEvent event) { 
    return true; 
    } 
}); 

wahre Rückkehr ist diesen Dialog zu verhindern, dass zu schließen, und es kann nicht durch einen Klick wieder geschlossen werden. Auch ich schlage vor:

dialog.setCanceledOnTouchOutside(false); 

Was wird verhindern, dass Benutzer Dialog durch Klicken außerhalb davon entlassen.

Verwandte Themen