Android 带暂停的倒计时问题

Android 带暂停的倒计时问题,android,timer,countdown,Android,Timer,Countdown,我正在尝试使用这个计时器,就像在这个问题上建议的那样: 但并没有像预期的那样起作用。暂停/恢复工作正常,但如果我取消并重新创建计时器,则计数将从上次暂停的时间开始。我需要从初始值开始。 例如,计数器的初始值为3分钟。如果我在2分钟时暂停它,那么当我尝试再次创建它时,它将从2分钟开始。 有什么帮助吗 public class MainActivity extends ButtonMethods implements OnClickListener { private Cou

我正在尝试使用这个计时器,就像在这个问题上建议的那样:

但并没有像预期的那样起作用。暂停/恢复工作正常,但如果我取消并重新创建计时器,则计数将从上次暂停的时间开始。我需要从初始值开始。 例如,计数器的初始值为3分钟。如果我在2分钟时暂停它,那么当我尝试再次创建它时,它将从2分钟开始。 有什么帮助吗

    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@Override
public void onBackPressed()
{
    super.onBackPressed();
    timer.cancel();          // timer is a reference to my inner CountDownTimer class
    timer = null;
    secs = 10;
}