Android: utiliser le gestionnaire de la poste.retardé deux fois
Je voudrais savoir si il est possible d'utiliser handler().postdelayed deux fois?
Je veux dire, je veux créer un bouton, que quand vous cliquez dessus, changer la couleur et rester dans cet état de 1 seconde, puis, après 1 seconde, un autre bouton pour changer 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);
CheckAnswer:
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 qu'il ne s'arrête pas à cette postDelayed et l'étape de la waitAnswer.
Grâce
OriginalL'auteur loading27 | 2013-08-17
Vous devez vous connecter pour publier un commentaire.
Pourquoi vous attendez-vous à arrêt sur postDelayed? postDelayed des lieux de vos Exécutables pour le Gestionnaire de l'Arpenteuse de la file d'attente et les retours. Depuis deux gestionnaires sont créés sur le même looper, la deuxième exécutable est exécuté après que le premier se termine (en plus de toutes gauche de la 500 ms de retard)
Mise à JOUR:
Vous avez besoin de quelque chose comme ça
votre deuxième Exécutable est vide. checkAnswer change de couleur verte, puis les files d'attente rectangle vide, puis définit l'arrière-plan des ressources, de sorte que vous ne verrez pas en vert
Oui, mais je pensais que si j'ai mis de la couleur au vert et de créer une file d'attente vide de 500 ms, puis choisir la couleur de fond à nouveau, je vois vert (500 ms).
eh bien, je ne suis pas sûr de ce que serait "une file d'attente vide de 500 ms", mais de toute façon il fonctionne comme je l'ai indiqué dans ma réponse.
Permettez-moi de comprendre clairement quelque chose. Si vous avez par exemple le code suivant: A; Handler handler = new Handler(); gestionnaire.postDelayed(new Runnable() { @Override public void run() { B; } }, 1000); C; Il va exécuter Une opération, puis attendre 1 seconde et exécuter d'opération B et après l'exécution de l'opération C droit?
OriginalL'auteur msh