2012-06-04 3 views
5

Ich verwende Toast in meiner App. Wenn ich einen Knopf drücke, wird ein Toast angezeigt. Mein Problem ist, dass das zweite Mal, wenn ich auf den Knopf drücke, der zweite Toast "wartet", bis der erste beendet ist und nur als es zeigt .. Ich möchte den aktuellen sofort zeigen und nicht warten. Das ist mein einfacher Code:Stoppen Sie einen Toast und starten Sie einen anderen in Android

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

wie kann ich das tun?

+0

Ich fürchte, Sie können nicht ... – VinceFR

+0

nicht einmal eine wierd Workaround ?! – roiberg

+0

@AlexanderPavlov nein ist es nicht. –

Antwort

5

Sie können immer 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); 

Anstatt also einen anderen Toast Objekt schaffen Sie den ersten verwenden können, brechen Sie es, stellen Sie den neuen Text und zeigen Sie es erneut.

+1

Abbrechen wird die Toast-Zeit nicht reduzieren. –

+0

ist es nicht die Arbeit ... – roiberg

+0

Es tut. Sie müssen den Abbruch auf dem Toast-Objekt selbst aufrufen. – papaiatis

1

Sie können toast.cancel() vor dem nächsten Toast verwenden.

+0

Abbrechen wird die Toast-Zeit nicht reduzieren –

+0

Danke Kazekagebut, aber laut Definition Schließen Sie die Ansicht, wenn sie angezeigt wird, oder zeigen Sie sie nicht an, wenn sie noch nicht angezeigt wird rufen Sie das. Normalerweise Ansicht verschwindet nach der entsprechenden Dauer selbst. –

+1

public void abbrechen() Seit: API Level 1 Schließen Sie die Ansicht, wenn es angezeigt wird, oder zeigen Sie es nicht, wenn es noch nicht angezeigt wird. In der Regel müssen Sie dies nicht aufrufen.Normalerweise verschwindet die Anzeige nach der entsprechenden Dauer von selbst. – Rookie

2

Stornieren Sie Ihre ursprüngliche Toast, legen Sie eine neue Nachricht und zeigen Sie erneut die Toast Nachricht.

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!. 
} 
Verwandte Themen