2011-06-23 79 views
1

我正在爲Android編寫測驗程序(用Java編寫)。當用戶回答一個問題時(通過點擊一個按鈕),我想在屏幕上顯示一條消息,說明他們是否正確,然後暫停5秒,然後繼續下一個問題。在Java GUI中暫停執行

但是,當單擊一個答案按鈕時,程序暫停,但不顯示正確/錯誤的消息。該消息只在睡眠方法結束後纔會出現。

if (correct) 
    Answer.setText("CORRECT!"); 
else 
    Answer.setText("WRONG!"); 

try { Thread.sleep(5000); } 
catch(InterruptedException e) {} 

作爲獎勵,我希望答案按鈕在暫停期間被禁用。

+0

你真的確定Thread.sleep是個好主意嗎?此外,5秒鐘意味着,如果你稍微慢一些,那麼Android的未回答對話框可能會彈出。如果你必須讓它睡覺,讓它睡一會兒。 –

回答

3

Imo AsyncTask對於這個用例來說太多了。

不要使用睡眠。 相反設置你的正確/不正確的消息,比做到這一點:

new Handler().postDelayed(new Runnable(){ 
    public void run() 
    { 
    goToNextScreen(); 
    } 
} 
, 5000); 
+0

Hooray它的工作,感謝您的簡單修復。 – Allen

4

你需要一個AsyncTask。谷歌給你一個介紹here

當您在主Activity上使用Thread.sleep()時,會讓應用程序進入睡眠狀態。 AsyncTask將允許你暫停5秒,也許會顯示一個進度欄,然後從那裏拿起,而不會凍結屏幕。

-1

你應該看看使用計時器。我不認爲使用線程是明智的。使用計時器來轉移到下一個問題將起作用。

timers here

希望這有助於。

聲明:我只使用Java中的定時器來做類似的事情,但我相信它可以在Android中使用。

+0

對我而言,奇怪的是我嘗試過使用計時器,但我仍然遇到同樣的問題。我對線程沒有很好的理解,以及它們如何與GUI一起使用,但必須有一個簡單的修復。 – Allen