2011-02-01 16 views
11

La mia applicazione visualizza uno Toast quando si verifica una determinata azione. Se due di queste azioni si verificano in stretta prossimità, tuttavia, mi piacerebbe rinunciare a visualizzare il primo Toast, invece di visualizzare solo il secondo. Pensavo che il trucco fosse Toast.cancel(), ma quello che fa è semplicemente nascondere il primo brindisi; la seconda viene visualizzata solo dopo che la prima avrà comunque terminato la visualizzazione.Annullare un brindisi su Android prima che appaia

codice Esempio:

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

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

toast1.cancel(); 

La seconda Toast presenta solo dopo una breve attesa (la lunghezza della breve durata). Questo infatti accade anche se chiamo toast2.cancel().

+1

ho avuto buoni risultati da [la mia classe 'Boast.java' fa riferimento in questo post correlati] (http://stackoverflow.com/questions/16098151/android-cancel-toast -quando-eccitante-the-app-e-quando-pane-si-essere-mostrata). Non ho avuto problemi con '.cancel()' non funziona correttamente. –

risposta

1

Non sono sicuro che ciò funzionerebbe, ma forse provate a cancellare entrambi e poi a mostrare di nuovo il secondo.

+3

Siamo spiacenti, lo stesso risultato: Test2 appare ma è in ritardo. In realtà ho trovato che nel codice sorgente di Toast, l'unica cosa che "annulla" fa è nascondere la vista, non deselezionare il brindisi nel sistema. –

1

Toast.makeText(context, text, duration) restituisce un oggetto Toast. Chiama il metodo cancel() su questo oggetto per cancellarlo.

Esempio:

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

Hai persino letto la sua domanda? –

Problemi correlati