Runnable 方法在运行一次后停止

Runnable method stops after one time

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

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

我移线解决了问题

 count = Integer.parseInt(etInput.getText().toString());

在 Runnable 之外,因为问题是我总是将不变的 edittext 值传递给计数,例如 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);
    }