2011-06-27 11 views
7

Tengo muchos botones. Y al hacer clic en cada uno de ellos, muestro un Toast. Pero mientras un brindis se carga y se muestra a la vista, se hace clic en otro botón y la tostada no se muestra hasta que finaliza el que se está mostrando.¿Cómo reemplazar inmediatamente la tostada actual por una segunda sin esperar a que la actual termine?

Por lo tanto, me gustaría encontrar una manera de detectar si se muestra una tostada en el contexto actual. ¿Hay alguna manera de saber si se está mostrando una tostada de manera que pueda cancelarla y mostrar una nueva?

+0

Creo que es mejor usar el marco notificaciones para mostrar los mensajes a medida que estaría mostrando varios mensajes al mismo tiempo. Si utiliza la solución de cuadro de alerta o brindis que necesitaría para administrar posiciones/múltiples ventanas emergentes, las notificaciones deberían ayudarlo a simplificar su programa. –

Respuesta

26

Puede cachear el actual Toast en la variable de Actividad, y luego cancelarlo justo antes de mostrar el próximo brindis. He aquí un ejemplo:

Toast m_currentToast; 

void showToast(String text) 
{ 
    if(m_currentToast != null) 
    { 
     m_currentToast.cancel(); 
    } 
    m_currentToast = Toast.makeText(this, text, Toast.LENGTH_LONG); 
    m_currentToast.show(); 

} 

Otra manera de actualizar al instante Toast mensaje:

void showToast(String text) 
{ 
    if(m_currentToast == null) 
    { 
     m_currentToast = Toast.makeText(this, text, Toast.LENGTH_LONG); 
    } 

    m_currentToast.setText(text); 
    m_currentToast.setDuration(Toast.LENGTH_LONG); 
    m_currentToast.show(); 
} 
+2

¿Qué tal mostrar múltiples tostadas al mismo tiempo? ¡Creando instancias múltiples y mostrando en distintos lugares en la ventana de visualización! ¿Es así como se puede hacer? – Sandeep

+0

Creo que una ventana emergente podría funcionar mejor para usted en esta situación. Mucho más flexible con cosas así. – DustinRiley

+0

Estaba buscando una manera de cancelar la tostada existente si le mostraba una nueva. Tu primer ejemplo no funciona bien para mí, pero la segunda versión funciona muy bien para mis necesidades. – bmaupin

Cuestiones relacionadas