2011-02-01 10 views
11

Mi aplicación muestra un Toast cuando ocurre una acción determinada. Sin embargo, si dos de estas acciones ocurren muy cerca, me gustaría renunciar a mostrar el primer Toast, en lugar de mostrar solo el segundo. Pensé que Toast.cancel() haría el truco, pero lo que hace es simplemente esconder el primer brindis; el segundo solo se muestra después de que el primero hubiera terminado de mostrarse de todos modos.Cancelar un brindis en Android antes de que aparezca

código Ejemplo:

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

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

toast1.cancel(); 

El segundo Toast aparece solamente después de esperar un tiempo corto (la longitud de la corta duración). Esto de hecho sucede incluso si llamo al toast2.cancel().

+1

he tenido buenos resultados de [mi clase 'Boast.java' referencia en este post relacionado] (http://stackoverflow.com/questions/16098151/android-cancel-toast -cuando-saliendo-de-la-aplicación-y-cuándo-tostar-se-está-mostrando). No he tenido un problema con '.cancel()' que no funciona correctamente. –

Respuesta

1

No estoy seguro de que esto funcione, pero quizás intente cancelar ambos y luego muestre el segundo de nuevo.

+3

Lo sentimos, el mismo resultado: aparece Test2 pero se retrasa. De hecho, descubrí que en el código fuente de Toast, lo único que "cancelar" hace es ocultar la vista, no quitar el brillo de la tostada en el sistema. –

1

Toast.makeText(context, text, duration) devuelve Toast objeto. Llame al cancel() método en este objeto para cancelarlo.

Ejemplo:

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

¿Leyó su pregunta? –

Cuestiones relacionadas