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