2011-02-01 18 views
11

Moja aplikacja wyświetla Toast po wykonaniu określonej akcji. Jeśli jednak dwa z tych działań mają miejsce w pobliżu, chciałbym zrezygnować z wyświetlania pierwszego numeru Toast, zamiast tego wyświetlać tylko ten drugi. Pomyślałem, że Toast.cancel() zrobiłoby lewę, ale to, co robi, to po prostu ukryć pierwszy toast; drugi wyświetla się tylko wtedy, gdy i tak zakończy się pierwszy.Anuluj toast na Androida, zanim pojawi się

Przykład Kod:

Toast toast1 = Toast.makeText(parentActivity, "Test1", Toast.LENGTH_SHORT); 
Toast toast2 = Toast.makeText(parentActivity, "Test2", Toast.LENGTH_SHORT); 

toast1.show(); 
toast2.show(); 

toast1.cancel(); 

Drugi Toast pojawia się dopiero po odczekaniu krótkiego czasu (długość krótkiego czasu trwania). Dzieje się tak, nawet jeśli zadzwonię pod numer toast2.cancel().

+1

miałem dobre wyniki [mojej klasie 'Boast.java' mowa w tym związanej post] (http://stackoverflow.com/questions/16098151/android-cancel-toast -po wyjściu-z-aplikacji-i-kiedy-toast-jest-pokazane). Nie miałem problemu z '.cancel()' nie działa poprawnie. –

Odpowiedz

1

Nie jestem pewien, czy to zadziała, ale może spróbuj anulować oba z nich, a następnie ponownie wyświetlić drugi.

+3

Niestety, ten sam wynik: Test2 jest wyświetlany, ale jest opóźniony. Faktycznie odkryłem, że w kodzie źródłowym Toast jedyną rzeczą "anuluj" jest ukrywanie widoku, a nie odkładanie tosty w systemie. –

1

Toast.makeText(context, text, duration) zwraca obiekt Toast. Wywołanie metody cancel() na tym obiekcie, aby anulować.

Przykład:

Toast mToastText = Toast.makeText(getApplicationContext(), "Hello StackOverFlow!", Toast.LENGTH_SHORT); 
mToastText.cancel(); 
+0

Czy przeczytałeś nawet jego pytanie? –

Powiązane problemy