2012-06-04 15 views
5

Estoy usando Toast en mi aplicación. Cuando presiono un botón, muestra un Toast. Mi problema es que la segunda vez que presiono el botón, el segundo brindis está "esperando" que termine el primero y solo de lo que se muestra ... Quiero que el actual se muestre inmediatamente y no espere. Este es mi código simple:Detener un brindis y comenzar otro en android

toast = Toast.makeText(getApplicationContext(), "Press Back to retorn to the main page", Toast.LENGTH_SHORT); 
toast.show(); 

cómo puedo hacer eso?

+0

me temo que no puedo ... – VinceFR

+0

ni siquiera una solución extraño ?! – roiberg

+0

@AlexanderPavlov no, no lo es. –

Respuesta

5

Siempre puede cancel a Toast object.

final Toast tst = Toast.makeText(ctx, "This is a toast.", Toast.LENGTH_SHORT); 
tst.show(); 

Handler handler = new Handler(); 
    handler.postDelayed(new Runnable() { 
     @Override 
     public void run() { 
      tst.cancel(); 
      tst.setText("Same toast with another message."); 
      tst.show(); 
     } 
}, 1000); 

Así que en lugar de crear otro objeto pan tostado puede utilizar la primera, cancelarla, configure el nuevo texto y mostrar de nuevo.

+1

cancelar no reducirá el tiempo de tostadas. –

+0

no está haciendo el trabajo ... – roiberg

+0

Lo hace. Debe llamar a la cancelación en el objeto tostado. – papaiatis

1

Puede usar toast.cancel() antes de mostrar la próxima tostada.

+0

cancelar no reducirá el tiempo de tostadas. –

+0

Gracias Kazekagebut, pero según la definación Cierre la vista si se muestra, o no la muestre si aún no se muestra. Normalmente no tiene que llama esto. Normalmente, la vista desaparecerá por sí sola después de la duración adecuada. –

+1

public void cancel() Desde: API Nivel 1 Cierre la vista si se muestra o no la muestra si aún no se muestra. Normalmente no tiene que llamar a esto. Normalmente, la vista desaparecerá por sí sola después de la duración adecuada. – Rookie

2

Cancele su original Toast, configure un nuevo mensaje y muestre nuevamente el mensaje Toast.

Toast mytoast; 
mytoast = Toast.makeText(this, "Hi Ho Jorgesys! ", Toast.LENGTH_LONG); 
mytoast.show(); 
.... 
.... 
.... 
if(CancelToast){ 
    mytoast.cancel(); //cancelling old Toast! 
    mytoast = Toast.makeText(this, "Same toast with another message.", Toast.LENGTH_LONG); //Setting a new message. 
    mytoast.show(); //Show the new message!. 
} 
Cuestiones relacionadas