Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
Strelok45
11 / 11 / 6
Регистрация: 18.02.2010
Сообщений: 149
#1

Блокировка кнопки, пока идет обратный таймер - Программирование Android

31.08.2014, 07:37. Просмотров 679. Ответов 1
Метки нет (Все метки)

Доброго времени суток.
Задумка такая: нажимаем кнопку, и пока идет обратный таймер кнопка становится неактивной, по прошествии времени кнопка становится опять активной. Накидал код, но есть небольшой баг: кнопка блокируется не сразу, а только на третий нажим и вызывается как бы два таймера. Может кто подскажет как исправить или лучше сделать?
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
import android.app.Activity;
import android.os.Bundle;
import android.os.CountDownTimer;
import android.view.View;
import android.view.View.OnClickListener;
import android.widget.Button;
import android.widget.TextView;
 
public class MainActivity extends Activity implements OnClickListener{
 
      private static final int MILLIS_PER_SECOND = 1000;
      private static final int SECONDS_TO_COUNTDOWN = 30;
      private TextView     countdownDisplay;
      Button startButton;
      
      private CountDownTimer timer;
      
      @Override
      public void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.main);
            
        countdownDisplay = (TextView) findViewById(R.id.time_display_box);
        startButton = (Button) findViewById(R.id.startbutton);
        
        startButton.setOnClickListener(this);
      }
        
        @Override
           public void onClick(View v) {
             
             switch (v.getId()) {
             case R.id.startbutton:
                 try {
                      showTimer(SECONDS_TO_COUNTDOWN * MILLIS_PER_SECOND);
                    } catch (NumberFormatException e) {
                      // method ignores invalid (non-integer) input and waits
                      // for something it can use
                    }
                  }
              // break;
             }
          
          private void showTimer(int countdownMillis) {
              if(timer != null) {
                  
                  startButton.setEnabled(false);
                  //timer.cancel(); 
                  }
              timer = new CountDownTimer(countdownMillis, MILLIS_PER_SECOND) {
              @Override
              public void onTick(long millisUntilFinished) {
                countdownDisplay.setText("counting down: " +
                millisUntilFinished / MILLIS_PER_SECOND);
              }
              @Override
                public void onFinish() {
                  countdownDisplay.setText("KABOOM!");
                  startButton.setEnabled(true);
                }
              }.start();
            }
        
        
      }
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2014, 07:37
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Блокировка кнопки, пока идет обратный таймер (Программирование Android):

Запретить смену ориентации экрана пока идет загрузка
У меня есть такой код, где активити создается из двух фрагментов и потом...

Блокировка кнопки на час
У меня есть кнопка, я хочу, что бы при её нажатии она блокировалась на час,...

Блокировка кнопки на 15 секунд через таймер
При нажатии на кнопку "войти" происходит событие и если 5 раз выходит ошибка,...

TMediaPlayer пока идет видео
как сделать цикл "while видео проигрывается"? просто нужно скрывать окно, то...

Обратный таймер
как сделать видимый обратный таймер?

Таймер. Обратный отсчет
как мне сделать так, чтобы таймер доходил до 0. тобишь обратный отчет ...

1
YuraAAA
1578 / 1319 / 282
Регистрация: 25.10.2009
Сообщений: 3,436
Записей в блоге: 2
31.08.2014, 10:24 #2
Цитата Сообщение от Strelok45 Посмотреть сообщение
if(timer != null) {
startButton.setEnabled(false);
* * * * * * * * * //timer.cancel();
* * * * * * * * * }
при первом нажатии timer null и это условие не срабатывает.
1
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
31.08.2014, 10:24
Привет! Вот еще темы с решениями:

Обратный таймер времени
Допустим у меня есть div, в котором текст 13:00:00. Как мне сделать таймер на...

показать картинку загрузки пока идет запрос
Привет всем. Работаю с yandex картами и как только происходит клик по карте...

Заполнение progress bar пока идет измерение
Всем привет! Имеется программка, в которой по нажатию на кнопку происходит...

Блокировка Кнопки Windows (чтобы менюшка не появлялась от кнопки Пуск)
Народ! Помогите пожалуйста!!!!!!!!!!!!!!!!!!!!!!!!!!!!!! Как зафиксировать...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
2
Ответ Создать тему
Опции темы

КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin® Version 3.8.9
Copyright ©2000 - 2018, vBulletin Solutions, Inc.
Рейтинг@Mail.ru