如果单击我的按钮,如何重置计时器?

时间:2020-09-30 20:48:39

标签: java android

我有一个textview,并且我将计时器从45秒减少到0

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_forgot_password);
   TextView textView = (TextView) findViewById(R.id.textView6);
    t1 = (TextView)findViewById(R.id.t1);
    b1 = (Button) findViewById(R.id.button1);

    new CountDownTimer(45000, 1000) {

        public void onTick(long millisUntilFinished) {
            t1.setText("00:" + millisUntilFinished / 1000);
            if(millisUntilFinished<=10000){
                t1.setText("00:0" + millisUntilFinished / 1000);
            }
        }

        public void onFinish() {
            t1.setText("Tempo acabado");
            b1.setEnabled(true);

        }
    }.start();

我要在时间到期后为用户提供一个选项,使其单击b1按钮并重新启动计时器

2 个答案:

答案 0 :(得分:0)

您可以创建CountDownTimer的实例,然后在需要重新启动时可以在该实例上执行cancelstart

CountDownTimer countDownTimer = new CountDownTimer(45000, 1000) {
    //......................
}
//Start at first
countDownTimer.start();

//Restart when button is pressed
b1.setOnClickListener(new View.OnClickListener() {
       public void onClick(View v) {
        countDownTimer.cancel(); 
        countDownTimer.start();
       }
    });

答案 1 :(得分:0)

这是您想要的吗?

@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_forgot_password);
    TextView textView = (TextView) findViewById(R.id.textView6);
    t1 = (TextView) findViewById(R.id.t1);
    b1 = (Button) findViewById(R.id.button1);

    b1.setOnClickListener(view -> restartTimer());

    restartTimer();
}

private void restartTimer() {
    b1.setEnabled(false);
    new CountDownTimer(45000, 1000) {
        public void onTick(long millisUntilFinished) {
            t1.setText("00:" + millisUntilFinished / 1000);
            if (millisUntilFinished <= 10000) {
                t1.setText("00:0" + millisUntilFinished / 1000);
            }
        }
        public void onFinish() {
            t1.setText("Tempo acabado");
            b1.setEnabled(true);
        }
    }.start();
}