Форум программистов, компьютерный форум, киберфорум
Наши страницы
Программирование Android
Войти
Регистрация
Восстановить пароль
 
+1
292 / 130 / 45
Регистрация: 24.08.2010
Сообщений: 915
#1

Как сделать паузу — запретить нажатие кнопок на 5 секунд? - Программирование Android

22.04.2015, 18:13. Просмотров 1429. Ответов 8
Метки нет (Все метки)

Принцип игры - вопросы на время.
По кнопке "Старт" запускается таймер обратного отсчета, кнопка превращается в "Далее" и, пока работает таймер, нажимается несколько раз, отображая следующий вопрос. По завершении таймера кнопка делается обратно в "Старт" и можно начинать следующий раунд игры. Нужно выдержать паузу в несколько секунд, чтобы по завершении времени случайно не нажать на запуск следующего раунда, чтобы обсудить результаты.
http://www.cyberforum.ru/android-dev/thread2082179.html
Делаю так:
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
// стоп таймер
        btStart.setVisibility(View.INVISIBLE); //прячем кнопку старт
        playSound(SoundEndTimer);
        mVibrator.vibrate(300);
        StopRound();
}
 
    public void StopRound(){
        btStart.setText("Старт");
        NewRoundPause = true;
        try {
            Thread.sleep(5000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
        btStart.setVisibility(View.VISIBLE);
        NewRoundPause = false;
 
    public void btStart_Click(View v){
        if (NewRoundPause) return;
   // и т.д.
   }
В итоге кнопка не прячется, на нажатия в течении 5 сек не реагирует, зато потом стартует столько раз, сколько было нажатий в момент паузы.
Как победить?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2015, 18:13
Я подобрал для вас темы с готовыми решениями и ответами на вопрос Как сделать паузу — запретить нажатие кнопок на 5 секунд? (Программирование Android):

Запретить одновременное нажатие двух кнопок
Есть id: but1 и but2. onClick() по ним открывает разные фрагменты. Но если...

Как правильно сделать паузу в ходе работы приложения?
Здравствуйте, Всем. Необходимо просто в ходе выполнения программы сделать...

Как сделать TimePicker c выбором минут и секунд?
Для таймера нужно выставлять время в секундах и минутах (без часов), можно ли...

Нажатие кнопок в стороннем приложении
Возможно ли автоматом нажимать на кнопки в другом приложении? Есть примеры ?)

Сделать паузу перед закрытием AlertDilaog
Всем, Здравствуйте. Задача простая. Выводится диалог "Скорость игры", там...

8
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
22.04.2015, 18:37 #2
не вижу onClickListener для кнопки это раз. Может он просто где то в другом месте кода, который вы не скинули.
Поток Thread не вижу где прописан нормально. должно быть что то типа такого:
Java
1
2
3
4
5
6
7
8
9
10
Thread timer = new Thread() {
    public void run() {
            try {
            // some code
            }
            catch (InterruptedException e) {
                    e.printStackTrace();
                }
    }
}
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
22.04.2015, 18:40 #3
Попробуй отключить кнопку
Java
1
твояКнопка.setClickable(false);
0
+1
292 / 130 / 45
Регистрация: 24.08.2010
Сообщений: 915
22.04.2015, 18:54  [ТС] #4
Цитата Сообщение от Hedd Посмотреть сообщение
onClickListener
у меня такого вообще нет нигде. Это что, обработчик нажатия?
Java
1
public void btStart_Click(View v)
Цитата Сообщение от Hedd Посмотреть сообщение
Поток Thread не вижу где прописан нормально
Такого тоже нет, один поток.
Цитата Сообщение от Mikalai Посмотреть сообщение
твояКнопка.setClickable(false);
Неа, не помогает, так же всё
0
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
22.04.2015, 19:11 #5
+1, Советую к освоению:
OnClickListener - http://startandroid.ru/ru/uroki/vse-...primere-button
Thread - http://developer.alexanderklimov.ru/android/theory/thread.php
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
22.04.2015, 19:12 #6
Скинь весть код и хмл тоже.
0
+1
292 / 130 / 45
Регистрация: 24.08.2010
Сообщений: 915
22.04.2015, 19:45  [ТС] #7
Цитата Сообщение от Hedd Посмотреть сообщение
Ничего не понял. Зачем этот onClickListener ?
Обработчик, прописанный в xml вроде работает
Java
1
2
3
4
5
6
    <Button
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Старт"
        android:id="@+id/btStart"
        android:onClick="btStart_Click"
Или я что-то не догоняю?

Добавлено через 4 минуты
Цитата Сообщение от Mikalai Посмотреть сообщение
Скинь весть код и хмл тоже.
Весь код я хочу продать за пару миллионов евро )))
А что, так должно работать?
0
Mikalai
262 / 238 / 95
Регистрация: 11.01.2015
Сообщений: 666
22.04.2015, 20:07 #8
Вот чёрт, не получилось увести код на пару миллионов евро)))
Сложно понять что ты хочешь сделать. Если ты в основном потоке делаешь sleep(5000), то у тебя всё приложение зависает на эти 5 секунд. Какой в этом смысл непонятно.
Имплиментируй интерфейс OnClickListener и переопредели метод onClick(нажатие кнопки твоей)
потом повесь на кнопку обработчик - твояКнопка.setOnClickListener(this);
И там где спать будешь пиши так
Java
1
2
3
4
5
6
7
8
9
10
11
12
btn.setClickable(false);
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(5000);
                    btn.setClickable(true);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
btn - твоя кнопкаю сделай её final

Вариантов много ещё )))
0
+1
292 / 130 / 45
Регистрация: 24.08.2010
Сообщений: 915
23.04.2015, 11:16  [ТС] #9
Цитата Сообщение от Mikalai Посмотреть сообщение
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
btStart.setClickable(false);
btStart.setVisibility(View.INVISIBLE); 
        new Thread(new Runnable() {
            @Override
            public void run() {
                try {
                    Thread.sleep(5000);
                    btStart.setClickable(true);
                    btStart.setVisibility(View.VISIBLE);  // тут вылетает
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
            }
        }).start();
Так работает. Но без визуального оформления непонятно, когда кнопка разблокировалась.
При замене setClickable(false) на setVisibility(View.INVISIBLE) — при выходе из потока и установке setVisibility(View.VISIBLE) приложение вылетает с ошибкой потока.
Цитата Сообщение от Mikalai Посмотреть сообщение
btn - твоя кнопка сделай её final
Если делаю final Button btStart = null;
то далее в коде
Java
1
btStart = (Button)findViewById(R.id.btStart);
компилятор требует сделать её not final
0
23.04.2015, 11:16
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2015, 11:16
Привет! Вот еще темы с решениями:

Прочитать нажатие кнопок, когда приложение в фоновом режиме
Доброго времени суток, как сделать так: когда запустил приложение и свернул...

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

Как запретить нажатие кнопок
Как можно запретить нажимать кнопки, на пример Alt+Ctr+Del при помощи WinAPI и...

Запретить нажатие кнопок при скролле VerticalScrollBox
Здравствуйте, на форме имеется VerticalScrollBox и 47 кнопок на нем, как мне...


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

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

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