2016-08-28 4 views
1

Ich arbeite an meiner ersten Android-App und ich habe eine Situation, die mich wirklich nervt.Android zeigen neueste Toast

Nehmen wir an, dass der Benutzer einige Informationen in wenigen Textfeldern eingeben muss und nicht fortfahren kann, wenn es mindestens ein leeres Feld gibt.

Wenn der Benutzer auf eine Schaltfläche klickt, um fortzufahren und es mindestens ein leeres Feld gibt, wird ein bestimmter Toast angezeigt.

Das Problem ist, wenn Benutzer diese Schaltfläche wie 10 Mal klickt und dann diese fehlenden Informationen und Erlöse eingibt, werden diese Toast-Nachrichten weiterhin in der neuen Aktivität zusammen mit Toast für eine erfolgreiche Registrierung angezeigt.

Gibt es eine Möglichkeit, einen aktuell angezeigten Toast zu unterbrechen und das neueste oder etwas Ähnliches anzuzeigen, das diese Art von Verhalten verhindert?

bearbeiten: Ich habe @ Vucko's Antwort akzeptiert, weil es besser für mein Problem passt. @Augusto Carmo schrieb die Antwort, die tatsächlich funktioniert, aber ich bevorzuge Vucko Antwort, es ist nur eleganter.

+3

Von 'editText.setError (" Du kommst etwas ");'? Das ist viel besser als ein Toast und es wird automatisch Ihren Fehler lösen. – Vucko

+0

@Vucko Nein, habe ich nicht, bis jetzt. Danke für die Hilfe. – Jurza

+0

Werfen Sie einen Blick auf [Frage] (http://stackoverflow.com/questions/5907863/how-to-check-if-the-toast-have-dismented-or-not) und [diese Frage] (http://stackoverflow.com/questions/5295765/toast-issue-in-android). –

Antwort

3

Der elegantere und gemeinsamer Weg, dies zu tun wäre, zu verwenden:

editText.setError("Your error message"); 

Dies wird verschwinden selbst wenn Sie etwas in Ihrem editText schreiben oder Sie können es manuell entfernen, indem setError(null); Aufruf .

3

Haben Sie ein einzelnes Toast-Objekt, und wenn Sie eine weitere Toast-Nachricht anzeigen möchten, brechen Sie die letzte ab und zeigen Sie die neue an. Beispiel:

Toast toast = new Toast(); 
toast.makeText(CONTEXT_HERE, MESSAGE_HERE, TIME_HERE).show(); 

// displaying another 
toast.cancel(); 
toast.makeText(CONTEXT_HERE, ANOTHER_MESSAGE_HERE, TIME_HERE).show(); 
+0

Vielen Dank, aber ich denke, ich werde Ansatz @ Vucko schrieb, es scheint nur eleganter :) – Jurza

Verwandte Themen