Как я могу разрешить сброс моего CountDownTimer после завершения обратного отсчета? - PullRequest
6 голосов
/ 25 января 2011

Привет всем, я пытаюсь вернуть свой CountDownTimer к его первоначальному времени после того, как время достигнет нуля.Как бесконечный цикл.Вот код, который у меня есть (всего 3 таймера):

package com.android.countdown;


import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.widget.Button;
import android.widget.TextView;
import android.view.View.OnClickListener;

public class countdown extends Activity {


    public String formatTime(long millis) {
          String output = "00:00";
          long seconds = millis / 1000;
          long minutes = seconds / 60;

          seconds = seconds % 60;
          minutes = minutes % 60;

          String secondsD = String.valueOf(seconds);
          String minutesD = String.valueOf(minutes);

          if (seconds < 10)
            secondsD = "0" + seconds;
          if (minutes < 10)
            minutesD = "0" + minutes;

          output = minutesD + " : " + secondsD;
          return output;
        }

   @Override
     public void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         setContentView(R.layout.main);

//Declare Start/Stop button
Button btnstart = (Button)findViewById(R.id.btnstart);
Button btnstop = (Button)findViewById(R.id.btnstop);

//Declare Text fields to show time left
final TextView mCounter1TextField=(TextView)findViewById(R.id.counter1);
final TextView mCounter2TextField = (TextView)findViewById(R.id.counter2);
final TextView mCounter3TextField=(TextView)findViewById(R.id.counter3);



//Counter 1
final CountDownTimer Counter1 = new CountDownTimer(120000 , 1000) {
public void onTick(long millisUntilFinished) {
    mCounter1TextField.setText("Seconds left: " + formatTime(millisUntilFinished));
}

public void onFinish() {
    mCounter1TextField.setText("Finished!");
}
};

//Counter 2
final CountDownTimer Counter2 = new CountDownTimer(80000 , 1000) {
 public void onTick(long millisUntilFinished) {
     mCounter2TextField.setText("Seconds left: " + formatTime(millisUntilFinished));
 }

 public void onFinish() {
     mCounter2TextField.setText("Finished!");
 }
 };

//Counter 3
final CountDownTimer Counter3 = new CountDownTimer(10000 , 1000) {
  public void onTick(long millisUntilFinished) {
      mCounter3TextField.setText("Seconds left: " + formatTime(millisUntilFinished));
  }

  public void onFinish() {
      mCounter3TextField.setText("Finished!");
  }
  };


//Start Button
btnstart.setOnClickListener(new OnClickListener() {
 public void onClick(View v) {
  Counter1.start();
  Counter2.start();
  Counter3.start();
   }
});

//Stop Button
btnstop.setOnClickListener(new OnClickListener() {
 public void onClick(View v) {
  Counter1.cancel();
  Counter2.cancel();
  Counter3.cancel();
    }
});
}
}

Я не могу понять, что поместить внутрь onFinish ()

1 Ответ

6 голосов
/ 25 января 2011

Поместите CounterX.start() в соответствующий onFinish()

//Counter 1 
final CountDownTimer Counter1 = new CountDownTimer(120000 , 1000) { 
public void onTick(long millisUntilFinished) {
        mCounter1TextField.setText("Seconds left: " + formatTime(millisUntilFinished)); 
}

public void onFinish() {
    mCounter1TextField.setText("Finished!");
    Counter1.start(); 
}
};
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...