web-dev-qa-db-fra.com

Android: utilisez le gestionnaire post.delayed deux fois

Je voudrais savoir s'il est possible d'utiliser handler (). Postdelayed deux fois?

Je veux dire, je veux créer un bouton, que lorsque vous cliquez dessus, il change la couleur et reste dans cet état 1 seconde, puis, après 1 seconde, un autre bouton change la couleur.

J'ai créé le code suivant:

Dans le onclicklistener:

btn3.setBackgroundColor(Color.WHITE);
  new Handler().postDelayed(new Runnable() {
      @Override
      public void run() {

        checkAnswer();
        waitAnswer();
        btnRsp3.setBackgroundResource(R.drawable.selector); 
      }
    }, 1000);

Vérifier la réponse:

 public void CheckAnswer(){
      btn1.setBackgroundColor(Color.GREEN);

  new Handler().postDelayed(new Runnable() {
  @Override
  public void run() {
  }
}, 500);

btn1.setBackgroundResource(R.drawable.selector);
}

Je pense que le problème est sur CheckAnswer car il semble que cela ne s'arrête pas dans ce postDelayed et que nous passions à waitAnswer.

Merci

12
loading27

Pourquoi vous attendez-vous à ce qu'il s'arrête sur postDelayed? postDelayed place votre Runnable dans la file d'attente Handler Looper et retourne. Étant donné que les deux gestionnaires sont créés sur le même boucleur, le deuxième exécutable est exécuté après la fin du premier (plus ce qui reste du délai de 500 ms)

METTRE À JOUR:

Vous avez besoin de quelque chose comme ça

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