таймер ожидания не перезапускается при нажатии кнопки

в моем приложении я хочу, чтобы одна кнопка запускала таймер обратного отсчета, например:

@Override
public void onClick(View v) {
    switch (v.getId()) {

        case R.id.Next:

            // Define CountDown Timer Attributes//
            waitTimer1 = new CountDownTimer(45191, 1000) {


                @Override
                public void onTick(long millisUntilFinished) {
                    long timeLeft = millisUntilFinished / 1000;
                    Timer.setText("" + String.format("%d min, %d sec",
                            TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
                            TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
                                    TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));

                }

                @Override
                public void onFinish() {

                }

            }.start();


            // Repeat Words//
            if (word.getText().toString().equals("Big Foot")) {

                stringListCounter = 0;

            }
            // Change To Next Word//
            stringListCounter++;
            word.setText(stringIdList[stringListCounter]);

           break;
        }

    }
}

Как только таймер запустится в первый раз, я хочу иметь возможность снова нажимать эту кнопку, не запуская таймер заново.

Например (поддельный пример только для объяснения), например

 if(timer has started) {

     doNothingToTimer;
}

person Jordan    schedule 14.01.2015    source источник


Ответы (1)


Я думаю, проблема в том, что время повторно инициализируется каждый раз, когда нажимается кнопка.

@Override
public void onClick(View v) {
switch (v.getId()) {

    case R.id.Next:
        if (waitTimer1 == null){
        // Define CountDown Timer Attributes//
        waitTimer1 = new CountDownTimer(45191, 1000) {


            @Override
            public void onTick(long millisUntilFinished) {
                long timeLeft = millisUntilFinished / 1000;
                Timer.setText("" + String.format("%d min, %d sec",
                        TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished),
                        TimeUnit.MILLISECONDS.toSeconds(millisUntilFinished) -
                                TimeUnit.MINUTES.toSeconds(TimeUnit.MILLISECONDS.toMinutes(millisUntilFinished))));

            }

            @Override
            public void onFinish() {

            }

        }.start();
        }//end-if
        else{
            //
            //do other button stuff
        }


        // Repeat Words//
        if (word.getText().toString().equals("Big Foot")) {

            stringListCounter = 0;

        }
        // Change To Next Word//
        stringListCounter++;
        word.setText(stringIdList[stringListCounter]);

       break;
    }

}

}

person Matt    schedule 14.01.2015
comment
Отлично спасибо! Я знаю, что это было какое-то время оператора if, лол - person Jordan; 15.01.2015