2016-10-28 6 views
0

Désolé pour le nOb, mais je suis bloqué sur ce que je pensais être un simple morceau de code.L'état des boutons à bascule ne change pas

Lorsque l'état des 2 boutons à bascule est Activé, attendez quelques secondes et désactivez leur état. Les deux boutons ont textOn = "On" et textOff = "Off". Le code suivant est placé dans OnClickListeners pour tbToggle1 et tbToggle2.

tbToggle1.setOnClickListener(new View.OnClickListener() { 
     public void onClick(View view) { 
      if (tbToggle1.isChecked() & tbToggle2.isChecked()) { 
       try { 
        Thread.sleep(3000); 
       } catch (InterruptedException e) { 
        e.printStackTrace(); 
       } 
       tbToggle1.setChecked(false); 
       tbToggle2.setChecked(false); 
      } 
    }); 

Après avoir appuyé sur tbToggle1 (il repasse à « On ») puis en appuyant sur les deux boutons tbToggle2- changent leur état à « Off » au bout de 3 secondes. J'ai besoin de tbToggle2 pour passer à "On" pendant les 3 secondes avant de passer à "Off".

Est-ce un problème de thread d'interface utilisateur ou quelque chose? Merci pour toute aide.

Répondre

0

Vous appelez Thread.sleep sur le fil de l'interface utilisateur ce qui n'est jamais une bonne idée.

Essayez ceci:

tbToggle1.setOnClickListener(new View.OnClickListener() { 
    public void onClick(View view) { 
     if (tbToggle1.isChecked() & tbToggle2.isChecked()) { 
      tbTogggle1.postDelayed(new Runnable() { 
       @Override 
       public void run() { 
        tbToggle1.setChecked(false); 
        tbToggle2.setChecked(false); 
       } 
      }, 3000); 
     } 
});