Runnable方法一次后停止

时间:2015-02-19 18:05:52

标签: java android timer onclick runnable

我构建了一个小应用程序,你写了几秒,然后有一个计时器。当计时器变为0时,它会播放音乐。 不幸的是Runnable在一个减法后停止(我的意思是在我写完5并按下按钮后,5减去4然后停止。) 我无法在Runnable之外写onClick,因为我需要它只在用户点击START按钮后运行。 我怎样才能做到这一点? 这是我的代码:

public void onClick(View v) {
   // btnPlant.setEnabled(false);
    handler = new Handler();
    while(count >0) {
        final Runnable r = new Runnable() {
            public void run() {
                count = Integer.parseInt(etInput.getText().toString());
                count--;
                timer.setText(Integer.toString(count));
                handler.postDelayed(this, 1000);
            }
        };

        handler.postDelayed(r, 1000);
    }
}

1 个答案:

答案 0 :(得分:1)

我通过移动线

解决了这个问题
 count = Integer.parseInt(etInput.getText().toString());

在Runnable之外,因为问题是我总是将编辑文本的值传递给count,而不会改变,如5。 之后我从5中减去1,所以它的4和打印。 再次发送它的值为5,它变为4,一次又一次......所以:

public void onClick(View v) {
    // btnPlant.setEnabled(false);

        handler = new Handler();
        count = Integer.parseInt(etInput.getText().toString());

        Runnable r = new Runnable() {
            public void run() {
                count--;
                timer.setText(Integer.toString(count));
                handler.postDelayed(this, 1000);
            }
        };


        handler.postDelayed(r, 1000);
    }