Android 带暂停的倒计时问题
我正在尝试使用这个计时器,就像在这个问题上建议的那样: 但并没有像预期的那样起作用。暂停/恢复工作正常,但如果我取消并重新创建计时器,则计数将从上次暂停的时间开始。我需要从初始值开始。 例如,计数器的初始值为3分钟。如果我在2分钟时暂停它,那么当我尝试再次创建它时,它将从2分钟开始。 有什么帮助吗Android 带暂停的倒计时问题,android,timer,countdown,Android,Timer,Countdown,我正在尝试使用这个计时器,就像在这个问题上建议的那样: 但并没有像预期的那样起作用。暂停/恢复工作正常,但如果我取消并重新创建计时器,则计数将从上次暂停的时间开始。我需要从初始值开始。 例如,计数器的初始值为3分钟。如果我在2分钟时暂停它,那么当我尝试再次创建它时,它将从2分钟开始。 有什么帮助吗 public class MainActivity extends ButtonMethods implements OnClickListener { private Cou
public class MainActivity extends ButtonMethods implements OnClickListener {
private CountDownTimerWithPause timerPausable = null;
int milis = 180000;
@Override
protected void onCreate(Bundle savedInstanceState) {
// TODO Auto-generated method stub
super.onCreate(savedInstanceState);
setContentView(R.layout.main);
timerPausable = new CountDownTimerWithPause(milis, 1000, true)
{
@Override
public void onTick(long millisUntilFinished)
{
timer.setText("" + millisUntilFinished / 1000);
}
@Override
public void onFinish()
{
timer.setText("180");
DisableRandomButtons();
@Override
public void onClick(View v) {
switch (v.getId()) {
case R.id.bNewWord:
if(clicked == false){
clicked = true;
timerPausable.create();
}
else{
clicked = false;
timerPausable.cancel();
timerPausable=null;
milis=180000;
timerPausable.create();
}
break;
case R.id.imageView2:
tapsound.start();
if(isclicked == false){
isclicked = true;
timerPausable.pause();
}
else{
isclicked = false;
timerPausable.resume();
}
break;
在没有看到代码的情况下很难说您的确切问题是什么,但我所做的是在我的计时器上调用
cancel()
,然后使其等于null
以重置它。我的有点不同,我在onBackPressed()中处理它
我想这就是你要找的。它适合我。我添加了按钮的代码。我试图使用null值(secs变量what is?),但得到了null指针异常。如果我不使用pause resume函数,上面的代码就可以正常工作。secs是构造函数的millisInFuture
变量,sorrynull保持给定空指针异常,我将添加对计时器的所有引用。您在何时何地获取NPE
?此外,在取消计时器后重置时间milis=180000在onClick方法中,再次创建计时器。而且我会在取消后重新设置它。
@Override
public void onBackPressed()
{
super.onBackPressed();
timer.cancel(); // timer is a reference to my inner CountDownTimer class
timer = null;
secs = 10;
}