2011-05-28 24 views
3

在我的一種方法中,我有一個toast,如果用戶給出正確的輸入,就會出現。但是,我不希望下一個圖像顯示,直到吐司完成。是否可以等到吐司完成恢復該方法?

如果我使用Thread.sleep(3000)如果不允許toast顯示爲UI活動處於睡眠狀態。

的什麼,我試圖做一個例子:

public void correction(){ 
     if(correctionBoolean == true){ 
      Toast.makeText(this, "Correct!", Toast.LENGTH_SHORT).show();  
      if(Toast.time == finished){ 
      NextImage();} 
      } 

回答

5

我不相信會有任何方式舉杯做到這一點。如果你只是試圖向某人展示「你是正確的」窗口,我會考慮簡單地使用AlertDialog和一個肯定的Okay按鈕。

甚至可以顯示沒有按鈕的對話框,讓非UI線程休眠一會兒,然後關閉對話框。

+0

燁我用了一個'AlertDialog'顯示「正確的」,並強制用戶關閉該對話框。 睡眠部分無法完成,因爲此方法位於UI線程中。 但是,睡眠定時器僅用於防止在屏幕上的下一個圖像中顯示「吐司」。通過使用'AlertDialog',這可以防止發生「吐司」重疊。 – Navigatron 2011-05-28 18:59:05

+1

你仍然可以做一個睡眠。一個常見的做法,例如一個進度對話框,對我們來說,AsyncTask Class首先在UI線程(onPreExecute)上顯示一個對話框,然後在後臺線程(doInBackground)上做一些工作(或者只是睡覺),然後當完成並關閉對話框(onPostExecute)。 – Maximus 2011-05-28 19:15:01

4

創建一個不帶按鈕的自定義對話框,並使用處理程序在短時間後關閉它,然後顯示下一個圖像。

+0

謝謝,但我只需要一些基本的東西。我剛剛創建了一個'AlertDialog'而不是烤麪包片,以阻止烤麪包片重疊到下一張圖片上。 – Navigatron 2011-05-28 19:03:13

1

使用CountDownTimerToast.LENGTH_SHORT作爲時間?

public void correction(){ 
    if(correctionBoolean == true){ 
     Toast.makeText(this, "Correct!", Toast.LENGTH_SHORT).show();  
     new CountdownTimer(Toast.LENGTH_SHORT, 1000) { 

      public void onTick(long millisUntilFinished) { 

     } 

     public void onFinish() { 
      NextImage(); 
     } 
     }.start(); 

} 
+1

Toast.LENGTH_SHORT是一個常量值爲0,而不是實際時間,所以我不認爲這會起作用。 – Geobits 2011-05-28 18:45:40

+0

是的不幸的是,這不起作用。 – Navigatron 2011-05-28 18:51:50

+1

好的,不知道。值得一試! – 2011-05-28 19:51:38