我正在尝试制作一个基本应用程序,对于该应用程序的一部分,我需要在按下按钮后延迟以允许文本视图显示一个单词,然后更改为另一个单词,然后显示一秒钟并显示另一个单词。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;
}
}
该应用程序显示“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!”,暂停线程一秒钟,然后显示“IT WORKED”。但是,当我在手机和模拟器上运行它时,它会显示“READY”2 秒,然后跳到“IT WORKED”或者显示“GO!” 在这么短的时间内,看不到一起跳过它。我已经尝试将 setText("GO!") 移动到 catch 内,但这也不起作用。任何帮助将非常感激。
谢谢你!