2016-10-28 17 views
0

申し訳ありませんが、noob 'nessですが、私は単純なコードだと思っていました。トグルボタンの状態が変化しない

トグルボタンの状態を[オン]に変更すると、数秒待って状態をオフに切り替えます。どちらのボタンもtextOn = "On"、textOff = "Off"です。次のコードは、OnClickListenersのtbToggle1とtbToggle2の両方に配置されています。 tbToggle1を押すと(それが「オン」に変更)し、その後tbToggle2-両方のボタンを3秒後に「オフ」に自分の状態を変更押した後

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); 
      } 
    }); 

。 "オフ"に変更する前に3秒間 "On"に変更するにはtbToggle2が必要です。

UIスレッドの問題なのですか?助けてくれてありがとう。

答えて

0

あなたはUIスレッドでThread.sleepと呼んでいますが、これは決して良い考えではありません。

これを試してみてください:

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); 
     } 
}); 
関連する問題