2011-06-23 4 views
1

私はAndroid用のクイズプログラム(Javaで書かれています)を作成しています。ユーザーが(ボタンをクリックして)質問に答えると、画面に正しいかどうかを示すメッセージが点滅し、5秒間停止してから次の質問に移動します。Java GUIでの実行の一時停止

しかし、回答ボタンをクリックすると、プログラムは一時停止しますが、正解/間違ったメッセージは表示されません。 sleepメソッドが終了すると、メッセージが表示されます。

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

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

ボーナスとして、一時停止中に応答ボタンを無効にしたいと思います。

+0

本当にThread.sleepは良いアイデアですか?また、5秒ということは、Androidの応答しないダイアログがポップアップする可能性があることを意味します。あなたが絶対にそれを眠らさなければならない場合は、それをより短い間眠らせてください。 –

答えて

3

Imo AsyncTaskはこの用途には多すぎます。

スリープを使用しないでください。 は、代わりにあなたの正しい/間違ったメッセージを設定し、これを行うより:ボタンを無効にし、あなたが5000ミリ秒の遅延でメッセージを送信することができますし、メッセージが到着したときに、ボタンを再度有効にすることができます

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

簡単に修正してくれてありがとうございました。 – Allen

4

これにはAsyncTaskが必要です。 Googleはあなたにそれの紹介を与えるhere

メインアクティビティでThread.sleep()を実行すると、アプリケーションはスリープ状態になります。 AsyncTaskを使用すると、5秒間ポーズしたり、進行中の小さなバーを表示したりして、画面をフリーズせずにそこからピックアップすることができます。

-1

これにはタイマーを使用する必要があります。私はスレッドを使用してこれに賢明だとは思わない。タイマーを使用して次の質問に進むことができます。 timers here

ルックは、この情報がお役に立てば幸いです。

免責事項:Javaでタイマーを使用して類似したことを行っただけですが、Androidで動作すると確信しています。

+0

私にとって奇妙なのは、タイマーの使用を試みたことですが、私はまだ同じ問題があります。私はスレッドを強く理解しておらず、それらがどのようにGUIで使用されているのかについては分かりませんが、単純な修正が必要です。 – Allen

関連する問題