web-dev-qa-db-ja.com

Android:ハンドラpost.delayedを2回使用する

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に進んでいないようだからです。

ありがとう

12
loading27

なぜ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);
20
msh
new Handler().postDelayed(new Runnable() 
{
        @Override
        public void run() 
        {
            //Your Work
        }
  }, 1000);
0
Keshav Gera