我正在尝试根据按下按钮后耗时更新 TextView ,以下是我的代码:
public void startTimeCounter() {
tripTimeCounter = new CountDownTimer(60 * 1000, 1000) {
@Override
public void onFinish() {
// TODO Auto-generated method stub
repeatCounter = repeatCounter + 1;
startTimeCounter();
}
@Override
public void onTick(long millisUntilFinished) {
// TODO Auto-generated method stub
timedisplay = (TextView) findViewById(R.id.textView3);
timedisplay.setText(formatInterval((repeatCounter * 60) * 1000
- millisUntilFinished));
}
}.start();
}
private static String formatInterval(final long l) {
final long hr = TimeUnit.MILLISECONDS.toHours(l);
final long min = TimeUnit.MILLISECONDS.toMinutes(l
- TimeUnit.HOURS.toMillis(hr));
final long sec = TimeUnit.MILLISECONDS.toSeconds(l
- TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min));
final long ms = TimeUnit.MILLISECONDS.toMillis(l
- TimeUnit.HOURS.toMillis(hr) - TimeUnit.MINUTES.toMillis(min)
- TimeUnit.SECONDS.toMillis(sec));
return String.format("%02d:%02d:%02d", hr, min, sec, 0);
}
计时器工作正常,但是当我第二次按下按钮时, TextView 中的值不会被清除,而是关联一个与前一个计时器并行运行的新时间,我可以看到前一个时间和新时间的反射(reflect)同时递增。我想知道在第二次调用 startTimeCounter(); 之前如何清除先前的状态;
按钮点击代码:
private View.OnClickListener but = new View.OnClickListener() {
@Override
public void onClick(View v) {
if (isOnline() == true) {
// PHP();
// network();
startTimeCounter();
} else {
Toast.makeText(getApplicationContext(),
"Not connected to the internet", Toast.LENGTH_LONG)
.show();
}
}
};
最佳答案
试试这个代码:
公开课XXX
{
私有(private) CountDownMine CountDown;
private class CountDownMine extends CountDownTimer
{
public CountDownMine(long millisInFuture, long countDownInterval)
{
super(millisInFuture, countDownInterval);
}
@Override
public void onFinish()
{
//The same yours
}
@Override
public void onTick(long millisUntilFinished)
{
//The same yours
}
}
private View.OnClickListener but = new View.OnClickListener()
{
@Override
public void onClick(View v)
{
if (isOnline() == true)
{
//Code
if(CountDown != null)
CountDown.cancel();
CountDown = new CountDownMine(60 * 1000, 1000);
CountDown.start();
}
else
{
//Code
}
}
};
}
关于java - 定时器之前的状态未清除,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17924023/