Форум программистов, компьютерный форум CyberForum.ru

Программирование Android

Войти
Регистрация
Восстановить пароль
 
Strelok45
11 / 11 / 0
Регистрация: 18.02.2010
Сообщений: 149
#1

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

31.08.2014, 07:37. Просмотров 593. Ответов 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();
            }
        
        
      }
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
31.08.2014, 07:37     Блокировка кнопки, пока идет обратный таймер
Посмотрите здесь:
Запретить смену ориентации экрана пока идет загрузка Android
Блокировка кнопки на час Android
Android Обратный отсчёт
Не идет программа после цикла while Android
Android Не идет скачивание файлов через приложение
Блокировка активити Android
Android Блокировка клавиатуры
Android Блокировка экрана
Блокировка действий пользователя Android
Android Блокировка входящего вызова
На эмуляторе самая простая программа идет, а на телефон не устанавливается Android
POST запрос на один сайт идет на другой не проходит Android

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

Или воспользуйтесь поиском по форуму:
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
YuraAAA
1567 / 1309 / 269
Регистрация: 25.10.2009
Сообщений: 3,424
Записей в блоге: 2
31.08.2014, 10:24     Блокировка кнопки, пока идет обратный таймер #2
Цитата Сообщение от Strelok45 Посмотреть сообщение
if(timer != null) {
startButton.setEnabled(false);
* * * * * * * * * //timer.cancel();
* * * * * * * * * }
при первом нажатии timer null и это условие не срабатывает.
Ответ Создать тему
Опции темы

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