Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/363.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby-on-rails-4/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java 倒计时时取消按钮_Java_Android_Button_Countdown - Fatal编程技术网

Java 倒计时时取消按钮

Java 倒计时时取消按钮,java,android,button,countdown,Java,Android,Button,Countdown,这里有一个简单的问题,我有下面的代码在大部分情况下工作,但是如果在倒计时期间单击按钮,我希望按钮返回到它的原始状态。有什么建议吗 button.setOnClickListener(new OnClickListener() { @Override public void onClick(View v) { new CountDownTimer(4000, 1000) {

这里有一个简单的问题,我有下面的代码在大部分情况下工作,但是如果在倒计时期间单击按钮,我希望按钮返回到它的原始状态。有什么建议吗

            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();
            }
        });

在按下按钮之前,它会说“按下我”。一旦按下,倒计时将开始,按钮的文本将每秒更改(取消(3)、取消(2)、取消(1)),倒计时后,按钮将更新其文本为“发送”。如果在倒计时期间按下按钮(点击),它将取消倒计时。我想知道如何使它恢复到“推我”状态,基本上允许它再次被按下,并开始一个新的倒计时。任何帮助都将不胜感激

因此,您不应该在计时器中安装新的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
        }
    }

但我必须检查在倒计时时是否点击了同一个按钮。我认为您提供的内容会有所帮助,但我是否仍然需要计时器中的侦听器来检查它是否在倒计时期间被单击?onClick侦听器的工作方式是,如果在任何时候按下视图,它都会将请求发送到onClick方法。使用布尔值的希望在于了解按下该值时要做什么。如果在倒计时期间按下按钮,则布尔值将为真,因此它将在倒计时期间执行您想要的逻辑。否则它将正常工作