Android: используйте обработчик post.delayed дважды
Я хотел бы знать, можно ли использовать обработчик(). postdelayed дважды?
Я хочу сказать, что я хочу создать кнопку, которая при нажатии изменит цвет и останется в этом состоянии 1 секунда, а затем через 1 секунду другая кнопка изменит цвет.
Я создал следующий код:
В onclicklistener:
btn3.setBackgroundColor(Color.WHITE);
new Handler().postDelayed(new Runnable() {
@Override
public void run() {
checkAnswer();
waitAnswer();
btnRsp3.setBackgroundResource(R.drawable.selector);
}
}, 1000);
CheckAnswer:
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.
Спасибо
Ответы
Ответ 1
Почему вы ожидаете, что он остановится на postDelayed? postDelayed помещает вашу Runnable в очередь обработчика Looper и возвращается. Поскольку оба обработчика создаются на одном и том же элементе петлирования, второй runnable выполняется после первого завершения (плюс все, что осталось от задержки 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);
Ответ 2
new Handler().postDelayed(new Runnable()
{
@Override
public void run()
{
//Your Work
}
}, 1000);