Java 我想在2秒延迟后在切换按钮的两种状态之间切换

Java 我想在2秒延迟后在切换按钮的两种状态之间切换,java,android,android-layout,android-handler,Java,Android,Android Layout,Android Handler,我试图每2秒更新一次我的UI状态,UI包括一个文本视图和切换按钮,我的问题是文本视图得到了正确更新,但切换按钮得到了更新,然后什么也没有发生,这是使用的代码 @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.activity_main);

我试图每2秒更新一次我的UI状态,UI包括一个文本视图和切换按钮,我的问题是文本视图得到了正确更新,但切换按钮得到了更新,然后什么也没有发生,这是使用的代码

@Override
        protected void onCreate(Bundle savedInstanceState) {
            super.onCreate(savedInstanceState);
            setContentView(R.layout.activity_main);
            tb = (ToggleButton) findViewById(R.id.tb);
            tv = (TextView) findViewById(R.id.tv);
            Timer myTimer = new Timer();
            myTimer.schedule(new TimerTask() {
                @Override
                public void run() {
                    UpdateGUI();

            }
        }, 0, 2000);
    }

    private void UpdateGUI() {
        i++;

        //tv.setText(String.valueOf(i));
        myHandler.post(myRunnable);
    }

    final Runnable myRunnable = new Runnable() {
        public void run() {

              runOnUiThread(new Runnable() {
                  @Override
                  public void run() {
                      tv.setText("Counter is "+i);
                      if ((i/2)==0){System.out.println("Condition true........"+i);tb.setChecked(true);}else{ System.out.println("Condition failed........"+i);tb.setChecked(false);}
                  }
              });
            }



    };
}
logcat中的输出为

System.out: Condition true........1
 I/System.out: Condition failed........2
01-07 11:04:49.304 17321-17321/com.example.vishal.updateui I/System.out: Condition failed........3
01-07 11:04:50.305 17321-17321/com.example.vishal.updateui I/System.out: Condition failed........4
01-07 11:04:51.304 17321-17321/com.example.vishal.updateui I/System.out: Condition failed........5
01-07 11:04:52.305 17321-17321/com.example.vishal.updateui I/System.out: Condition failed........6

您为切换编写的代码条件是错误的

您的代码:

if ((i / 2) == 0) {
        System.out.println("Condition true........" + i);
        tb.setChecked(true);
    } else {
        System.out.println("Condition failed........" + i);
        tb.setChecked(false);
    }
更新如下:

if ((i % 2) == 0) {
            System.out.println("Condition true........" + i);
            tb.setChecked(true);
        } else {
            System.out.println("Condition failed........" + i);
            tb.setChecked(false);
        }
问题在于“/”,因为如果i==1,则值将为1/2=0,但在该值之后,i/2的值将永远不会为0。

您应该使用“%”更改“/”,检查ReadyDroid给出的答案