私は基本的なアプリを作成しようとしていますが、そのアプリの一部では、テキストビューに単語を1秒間表示してから別の単語に変更してからその表示を表示できるようにするために、ボタンが押された後に遅延が必要でした秒と別の単語を表示します。S0 3 ワード、2 遅延。私は正常に動作する postDelayed() を使用して最初の遅延を達成します。
@Override
public void onClick(View view) {
// TODO Auto-generated method stub
switch(view.getId())
{
case R.id.bStart:
display.setTextColor(Color.YELLOW);
display.setText("READY");
start.setText("Restart");
timer.postDelayed(makePattern, 1000);
break;
}
}
アプリは 1 秒間「READY」と表示し、新しいスレッドを開き、問題のある makePattern runnable を開始します。
makePattern = new Runnable()
{
@Override
public void run() {
display.setTextColor(Color.GREEN);
display.setText("GO!");
for(int x = 0; x < level; x++) {
pattern[x] = crazy.nextInt(4);
}
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
display.setText("IT WORKED");
}
}
};
ここでは、「GO!」と表示され、スレッドが 1 秒間一時停止してから、「IT WORKED」と表示されます。ただし、携帯電話とエミュレーターの両方で実行すると、「READY」が2秒間表示され、「IT WORKED」にスキップして「GO!」と表示されます。一気に読み飛ばすとは思えないほどの短い時間です。setText("GO!") をキャッチ内に移動しようとしましたが、それもうまくいきませんでした。どんな助けでも大歓迎です。
ありがとう!