Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/387.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 如何从同一按钮暂停/恢复MyCounter?_Java_Android_Timer_Countdown_Countdowntimer - Fatal编程技术网

Java 如何从同一按钮暂停/恢复MyCounter?

Java 如何从同一按钮暂停/恢复MyCounter?,java,android,timer,countdown,countdowntimer,Java,Android,Timer,Countdown,Countdowntimer,我对安卓相当陌生(我已经编程将近一个月了,感觉好像大部分时间我都在与这个问题作斗争!) 我正在尝试创建一个计时器应用程序。目前有两个按钮,一个启动计时器(如果再次按下,则将时间重置为0),另一个停止按钮暂停计时器(如果再次按下,则不执行任何操作) 我试图让这些按钮执行以下操作: 按钮1=如果按下一次,则启动计时器。如果在计时器运行时按下,它将暂停;如果在计时器暂停时按下,它将恢复 按钮2=如果按下,将重新启动计时器 我的java代码如下: //within on create

我对安卓相当陌生(我已经编程将近一个月了,感觉好像大部分时间我都在与这个问题作斗争!)

我正在尝试创建一个计时器应用程序。目前有两个按钮,一个启动计时器(如果再次按下,则将时间重置为0),另一个停止按钮暂停计时器(如果再次按下,则不执行任何操作)

我试图让这些按钮执行以下操作:

  • 按钮1=如果按下一次,则启动计时器。如果在计时器运行时按下,它将暂停;如果在计时器暂停时按下,它将恢复
  • 按钮2=如果按下,将重新启动计时器
我的java代码如下:

    //within on create
    start = (Button)findViewById(R.id.start);

    stop = (Button)findViewById(R.id.stop);
    tv  = (TextView)findViewById(R.id.tv);
    tv.setText("30"); // starting from 30.

    final MyCounter timer = new MyCounter(30000,1000);
    start.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.start();
        }
    });
    stop.setOnClickListener(new OnClickListener() {
        @Override
        public void onClick(View v) {
            timer.cancel();
        }
    });
}

public class MyCounter extends CountDownTimer{

    public MyCounter(long millisInFuture, long countDownInterval) {
        super(millisInFuture, countDownInterval);
    }

    @Override
    public void onFinish() {
        System.out.println("Timer Completed.");
        tv.setText("Timer Completed.");
    }

    @Override
    public void onTick(long millisUntilFinished  ) {
        tv.setText((millisUntilFinished/1000 + ":" +  millisUntilFinished/100));
        System.out.println("Timer  : " + (millisUntilFinished/1000));
    }
}

我想我必须保存和恢复实例状态以暂停和恢复计时器,并且我必须使用布尔值来更改button1(“开始”)的onclicklistner。例如,如果计时器正在运行并单击了button1,则执行此操作。

在onTick方法中,将剩余的毫秒记录到一个变量中。然后,当您在第二次按下按钮时,用您在onTick()方法中记录的剩余时间创建一个新的倒计时器。

谢谢您的awnser,不过我还有几个问题。。。如何将重拍时间记录为整数?当我创建第二个倒计时时,我是否使用布尔值/我如何在倒计时计时器应该运行的时间之间进行定义?我对这一切还不太熟悉,所以还是习惯了。