Ich verwende einen Datumsauswahl in Android, um den Benutzer das Datum wählen zu lassen. Ich möchte, dass es eine Sache macht, wenn der Benutzer ein Datum wählt und es setzt (ich habe das gut funktioniert) und dann ein bestimmtes Textfeld löscht, wenn der Benutzer die Abbrechen-Taste auf dem Datepicker drückt (öffne den Datepicker, aber annulliere dann davon).
Ich habe versucht, ein
zu machen %Vor%dann tue ich
%Vor%zum Anhängen des Listeners.
Mein Problem ist, dass der Hörer funktioniert, wenn der Benutzer die Zurück-Taste drückt, aber nicht, wenn er die Abbrechen-Taste drückt. Ich habe versucht, einen Ablehnungs-Listener zu verwenden, und das funktioniert, abgesehen davon, dass es auch dann losgeht, wenn ich den Datepicker setze oder abbreche!
Was muss ich tun, damit etwas passiert, wenn und nur wenn ich die Abbrechen-Taste auf meinem Datepicker drücke?
Sie können eine boolesche Variable isDataSet erstellen und in dateSetListener ausführen isDataSet = true; und dann fügen Sie onDismissListener mit einem solchen Code hinzu:
%Vor%Vergessen Sie aber nicht, jedesmal, wenn Sie einen Dialog erstellen, isDataSet = false zu setzen.
Nach einigen Experimenten habe ich festgestellt, dass ein OnDismissListener erforderlich ist, wie unten gezeigt. Beachten Sie, dass ich meine Lösung für einen TimePickerDialog entwickelt habe, aber setOnDismissListener von Dialog geerbt wurde, so dass es für einen DatePickerDialog genauso funktionieren sollte.
%Vor%Ich habe das getestet und es funktioniert. In der Tat habe ich festgestellt, dass der OnDismissListener in den beiden Szenarien aufgerufen wird, die Sie erwähnen, wenn der Benutzer auf die Schaltfläche Abbrechen klickt und wenn sie die Schaltfläche Hardware zurück drücken. Du brauchst also nur diesen einen Handler.
Schließlich, jetzt, wo ich weiß, wofür man googeln muss, fand ich diesen Artikel , das den Unterschied zwischen einem OnDismissListener und einem OnCancelListener im Abschnitt "Verwenden von Dismiss Listeners" beschreibt:
Die vollständige Lösung (getestet und funktioniert) besteht darin, den OnDismissListener (siehe obige Antwort 3 von Kenneth Baltrinic) zusammen mit dem von dilix beschriebenen onDateSet-Boolean zu kombinieren (1 Antwort oben). Sie brauchen beides, weil onDismiss in allen Fällen verwendet wird: (1) Benutzer hat tatsächliche Daten ausgewählt (2) Benutzer hat abgebrochen (3) Benutzer hat Hardware-Zurück-Taste gedrückt.
Mit der Kombination können Sie zwischen ihnen unterscheiden.
Tags und Links android datepicker