Handler()。postdelayedを2回使用できるかどうか知りたいのですが?
つまり、ボタンを作成したいのですが、クリックすると色が変化し、1秒間この状態のままで、1秒後に別のボタンで色が変化します。
次のコードを作成しました。
Onclicklistenerで:
btn3.setBackgroundColor(Color.WHITE);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
checkAnswer();
waitAnswer();
btnRsp3.setBackgroundResource(R.drawable.selector);
}
}, 1000);
答えをチェック:
public void CheckAnswer(){
btn1.setBackgroundColor(Color.GREEN);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
}
}, 500);
btn1.setBackgroundResource(R.drawable.selector);
}
私は問題がCheckAnswerにあると思います。なぜなら、それはこのpostDelayedで止まらず、waitAnswerに進んでいないようだからです。
ありがとう
なぜpostDelayedで止まると思いますか? postDelayedはRunnableをハンドラールーパーキューに配置して戻ります。両方のハンドラーは同じルーパー上に作成されるため、最初のハンドラーが終了した後に2番目のランナブルが実行されます(500ミリ秒の遅延の残りすべて)
更新:
あなたはそのようなものが必要です
Handler handler = new Handler();
handler.postDelayed(new Runnable() {
@Override
public void run() {
btn1.setBackgroundColor(Color.GREEN);
}
}, 1000);
handler.postDelayed(new Runnable() {
@Override
public void run() {
btn1.setBackgroundResource(R.drawable.selector);
}
}, 2000);
new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
//Your Work
}
}, 1000);