У меня есть обратный отсчет до определенной даты с помощью андроида CountDownTimer, когда таймер закончен, он говорит «Закончено», но мне бы очень хотелось, чтобы он перезапустил таймер, но на новую дату? Это возможно? Я попытался напечатать код, который у меня уже есть в методе onFinish, но он не работает и вызывает несколько ошибок.Сброс CountDownTimer на новую дату, когда закончите?
Мой код:
@Override
protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
setContentView(R.layout.activity_main);
//Creating the TextView for the countdown
final TextView tv_countdown = (TextView) findViewById(R.id.countdown_text_view);
//Set the Calendar Date and Time
Calendar start_calendar = Calendar.getInstance();
Calendar end_calendar = Calendar.getInstance();
end_calendar.set(Calendar.YEAR, 2015);
end_calendar.set(Calendar.MONTH, 10);
end_calendar.set(Calendar.DATE, 06);
end_calendar.set(Calendar.HOUR_OF_DAY, 0);
end_calendar.set(Calendar.MINUTE, 0);
end_calendar.set(Calendar.SECOND, 0);
long start_millis = start_calendar.getTimeInMillis(); //get the start time in milliseconds
long end_millis = end_calendar.getTimeInMillis(); //get the end time in milliseconds
long total_millis = (end_millis - start_millis); //total time in milliseconds
//Convert the time from milliseconds to the correct time specified
//1000 = 1 second interval
CountDownTimer cdt = new CountDownTimer(total_millis, 1000) {
@Override
public void onTick(long millisUntilFinished) {
long days = TimeUnit.MILLISECONDS.toDays(millisUntilFinished);
millisUntilFinished -= TimeUnit.DAYS.toMillis(days);
long hours = TimeUnit.MILLISECONDS.toHours(millisUntilFinished);
millisUntilFinished -= TimeUnit.HOURS.toMillis(hours);
long minutes = TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished);
millisUntilFinished -= TimeUnit.MINUTES.toMillis(minutes);
long seconds = TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished);
//Set the TextVew output
tv_countdown.setText(days + " Days" + "\n" + hours + " Hours" + "\n" + minutes + " Minutes" + "\n" + seconds + " Seconds"); }
//Set Output when countdown finishes
@Override
public void onFinish() {
tv_countdown.setText("Finished!");
}
};
cdt.start();