Кнопка Отмена во время обратного отсчета - PullRequest
1 голос
/ 12 февраля 2012

Быстрый вопрос, у меня есть следующий код, работающий по большей части, но я бы хотел, чтобы кнопка вернулась в исходное состояние, если она нажата во время обратного отсчета.Любые предложения?

            button.setOnClickListener(new OnClickListener() {
            @Override
            public void onClick(View v) {

                new CountDownTimer(4000, 1000) {

                    @Override
                    public void onFinish() {
                        button.setText("SENT");                 

                    }

                    @Override
                    public void onTick(long sec) {
                        button.setText("CANCEL (" + sec / 1000 + ")");
                        button.setOnClickListener(new OnClickListener() {

                            @Override
                            public void onClick(View v) {
                                cancel();

                            }

                        });

                    }
                }.start();
            }
        });

Перед тем, как кнопка будет нажата, она скажет «Push Me».После нажатия начнется обратный отсчет, и текст кнопки будет меняться каждую секунду (ОТМЕНА (3), ОТМЕНА (2), ОТМЕНА (1)), а после обратного отсчета кнопка обновит свой текст на «ОТПРАВЛЕНО».Если кнопка нажата во время обратного отсчета (onTick), он отменит обратный отсчет.Я хотел бы знать, как заставить его вернуться в состояние «толкни меня», и в основном позволить снова нажать его и начать новый отсчет.Любая помощь будет оценена!

1 Ответ

2 голосов
/ 12 февраля 2012

Таким образом, у вас не должно быть нового onClickListener внутри таймера, потому что он использует намного больше памяти, чем необходимо, и может привести к неожиданным результатам. Вместо этого я бы предложил использовать логическое значение для, если таймер включен, и использовать уже существующую кнопку onClickListener. Убедитесь, что ваш таймер объявлен глобально, если вы используете это. Вот пример того, как это может работать:

    button.setOnClickListener(new OnClickListener {
        if(timerIsOn){
          if(timer != null){
            timer.cancel();
            timerIsOn = false;
          }
        }
        else{
        timerIsOn = true;
        //start the timer and do whatever else
        }
    }
...