Ich entwickle eine Anwendung, die beim Drücken der Schaltfläche einen Dialog mit den Schaltflächen OK und Abbrechen öffnet.
Es funktioniert gut.
Wenn der Benutzer die Zurück-Taste drückt, gehe ich wie folgt vor
public boolean onKeyDown(int keyCode, KeyEvent event)
{
if ((keyCode == KeyEvent.KEYCODE_BACK))
{
}
return super.onKeyDown(keyCode, event);
}
Die obige Methode wird jedoch nicht aufgerufen. Wie kann ich damit umgehen?
Antworten:
quelle
Dialog
;finish()
kümmert sich schon darum. Außerdem sollte diese Methode wahrscheinlich zurückkehrenfalse
, um wichtige Ereignisse an anderer Stelle erfassen zu können&& event.getAction() == KeyEvent.ACTION_UP
der Antwort hinzugefügt . Ohne sie wird der Codeblock zweimal ausgeführt. (Taste AB und Taste AUF). In diesem Beispiel ist es nicht so wichtig, aber für andere Aktionen als finish () kann es sehr wichtig sein.dialog.dismiss()
wird ein Speicherverlust auftreten.finish()
unddialog.dismiss()
sollte im obigen Code umgeschaltet werden.Klingt so, als ob Sie den OnCancelListener beim Erstellen des Dialogfelds festlegen möchten. Es sieht aus wie das:
quelle
Sie müssen die
OnCancel
Methode überschreiben . Diese Methode ruft beim Drücken der Zurück-Taste auf. Hier ist Code, der perfekt für mich funktioniert.Hoffe, dies wird dir helfen und akzeptiere es, wenn es dir hilfreich ist.
Vielen Dank..
quelle
Versuche dies
quelle
Wenn Sie ein DialogFragment verwenden, kann ich sagen, dass der richtige Weg darin besteht, onCancel () zu überschreiben.
Mir ist aufgefallen, dass
setOnCancelListener
es nicht funktioniert undsetOnKeyListener
funktioniert, aber für mich hat es den lustigen Nebeneffekt, dass es alle Tasten verschluckt, wenn Ihr Dialog einen Bearbeitungstext enthält.quelle
Dies liegt daran, dass Ihr Fenster beim Öffnen Ihres Dialogfelds auf Dialog ausgerichtet ist. Jetzt müssen Sie sich also um
key
Ihren Dialog kümmern.quelle
key
im Dialog.Überschreiben Sie die Methode
onBackPressed()
in Ihrem eigenen Dialogfeld und verwenden Sie sie in Ihrem Code:Verwenden:
quelle
Dieser Code funktioniert:
quelle