我一直在尝试使用CountDownTimer为倒数计时器编码,并使其能够从停止时间恢复。到目前为止,我能够参考另一个问题并提出这个问题。
public void onClick(View v) {
getResume();
if ( getResume()==0) {
countDownTimer.start();
timerHasStarted = true;
startB.setText("STOP");
setResume(1);
Toast.makeText(this, getResume()+"",Toast.LENGTH_LONG).show();
} else if (getResume()==1) {
countDownTimer.cancel();
timerHasStarted = false;
startB.setText("RESTART");
setResume(2);
Toast.makeText(this, getResume()+"",Toast.LENGTH_LONG).show();
} else if (getResume()==2){
CountDownTimer rcdt = new MyCountDownTimer(s1, interval);
rcdt.start();
setResume(1);
}
}
所以getResume()只是为了得到全局的int resume,我认为我可以用来作为一个开关,因为timerHasStarted并没有帮助我。但是,由于我在恢复为2时创建了新的计时器,因此我无法多次恢复计时器。这段代码只让我恢复一次,因为它是不同的计时器,并且在rcdt.start()发生后我甚至不能.cancel()。很明显,我错过了一个重要的概念,但我无法通过搜索找到答案。 https://gist.github.com/bverc/1492672与这种情况不同,我只是制作了milisuntilfinished = s1,并用它来启动新的计时器。是这样的吗?或者有什么方法可以使上面的代码工作? 请帮忙!
答案 0 :(得分:0)
尝试替换此行(在if == 2中)
CountDownTimer rcdt = new MyCountDownTimer(s1, interval);

与
countDownTimer= new MyCountDownTimer(s1, interval);

让我知道它的作品和你是否理解了问题是什么,如果是问题,但你不明白错误我会发布解释。