Подтвердить что ты не робот

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.

Спасибо

4b9b3361

Ответ 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);