倒计时期间取消按钮

时间:2012-02-12 04:14:51

标签: java android button countdown

这里有一个快速的问题,我有以下代码在大多数情况下工作,但我希望按钮在倒计时期间点击时返回到它的原始状态。有什么建议吗?

            button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                new CountDownTimer(4000, 1000) {

                    @Override
                    public void onFinish() {
                        button.setText("SENT");                 

                    }

                    @Override
                    public void onTick(long sec) {
                        button.setText("CANCEL (" + sec / 1000 + ")");
                        button.setOnClickListener(new OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                cancel();

                            }

                        });

                    }
                }.start();
            }
        });

在按下按钮之前,它会说“Push Me”。按下后,倒计时将开始,按钮的文本将每秒更改(CANCEL(3),CANCEL(2),CANCEL(1)),倒计时后按钮将其文本更新为“SENT”。如果在倒计时(onTick)期间按下该按钮,它将取消倒计时。我想知道如何让它恢复到“Push Me”状态,并且基本上允许它再次按下并开始新的倒计时。任何帮助将不胜感激!

1 个答案:

答案 0 :(得分:2)

因此,您不应该在计时器内部使用新的onClickListener,因为这需要使用更多的内存,并且可能会导致意外的结果。相反,如果计时器打开,我建议使用布尔值,并使用现有按钮的onClickListener。如果您使用此计时器,请确保您的计时器已全局声明。以下是一个可行的示例:

    button.setOnClickListener(new OnClickListener {
        if(timerIsOn){
          if(timer != null){
            timer.cancel();
            timerIsOn = false;
          }
        }
        else{
        timerIsOn = true;
        //start the timer and do whatever else
        }
    }