Идея в том, что два таймера работают последовательно, и повторяется n раз в зависимости от значения numberRound. На деле последовательность срабатывает только 1 раз, а mTextRound показывает значение numberRound+1.
Вот код:
public void TimerWorkOut() {
new CountDownTimer(secWork, 1000) {
public void onTick(long millisUntilFinished) {
mTextWork.setText(" " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextWork.setText("Rest!");
TimerRest();
}
}.start();
}
public void TimerRest() {
new CountDownTimer(secRest, 1000) {
public void onTick(long millisUntilFinished) {
mTextRest.setText(" " + millisUntilFinished / 1000);
}
public void onFinish() {
mTextRest.setText("Just do it!");
}
}.start();
}
// Кнопки
public void ClickStart(View view) {
secWork = pickerSecWork.getValue() * 1000;
secRest = pickerSecRest.getValue() * 1000;
numberRound = pickerRound.getValue();
while (n <= numberRound){
TimerWorkOut();
mTextRound.setText("0" + n);
n = n + 1;
}
}
// слушатели NumberPicker, и передача данных в TextWiew
NumberPicker.OnValueChangeListener onValueChangedWork = new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
if (!mIsRunning) {
mTextWork.setText(intToTime(newVal));
mCurrentPeriod = newVal;
}
}
};
NumberPicker.OnValueChangeListener onValueChangedRest = new NumberPicker.OnValueChangeListener() {
@Override
public void onValueChange(NumberPicker picker, int oldVal, int newVal) {
if (!mIsRunning) {
mTextRest.setText(intToTime(newVal));
mCurrentPeriod = newVal;
}
}
};
private String intToTime(int i) {
return (new SimpleDateFormat("ss")).format(new Date(i * 1000));
}
}