2011-06-23 57 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