更新
这已经解决了。我所做的是: -
sec = (time/1000)%60;
if (sec == 0){
min++;
if (min > 59){
min = 0;
hour++;
}
然后设置min = -1,以便初始0不会将min添加到计时器。
我需要一个从0到无限时间的计数器,直到用户选择一个选项。
所以,我所做的是用一些逻辑实现一个CountDownTimer,这样我就可以实现我想要的。
所以,我花了6个小时作为最长时间,直到计时器继续。 但我得到的问题是,一旦秒数达到59,然后在我编程时重置为0,但随后它保持为0并且最小值开始按秒增加。请帮忙
这是我的代码: -
public void newCountTimer(){
countdowntimer = new CountDownTimer(21600000,1000) {
@Override
public void onTick(long millisUntilFinished) {
long time = 21600000 - millisUntilFinished;
sec = time/1000;
if (sec > 59){
sec = 0;
min++;
if (min > 59){
min = 0;
hour++;
}
}
if (sec < 10) {
if (min < 10) {
if (hour < 10) {
timer_box.setText("0" + hour + ":0" + min + ":0" + sec);
} else {
timer_box.setText("" + hour + ":0" + min + ":0" + sec);
}
} else {
if (hour < 10) {
timer_box.setText("0" + hour + ":" + min + ":0" + sec);
} else {
timer_box.setText("" + hour + ":" + min + ":0" + sec);
}
}
} else {
if (min < 10) {
if (hour < 10) {
timer_box.setText("0" + hour + ":0" + min + ":" + sec);
} else {
timer_box.setText("" + hour + ":0" + min + ":" + sec);
}
} else {
if (hour < 10) {
timer_box.setText("0" + hour + ":" + min + ":" + sec);
} else {
timer_box.setText("" + hour + ":" + min + ":" + sec);
}
}
}
}
@Override
public void onFinish() {
}
}.start();
}
答案 0 :(得分:2)
问题是您的sec
变量总会越来越高
sec = time/1000;
if (sec > 59){
所以秒将从59变为60到61到62,依此类推,因此总是大于59.总是增加导致min在1分钟后总是增加
我的建议是在您的sec
计算中添加mod 60
sec = (time/1000)%60;
if (sec == 0){
min++;
...