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

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

Войти
Регистрация
Восстановить пароль
 
+1
115 / 86 / 7
Регистрация: 24.08.2010
Сообщений: 591
22.04.2015, 18:13     Как сделать паузу — запретить нажатие кнопок на 5 секунд? #1
Принцип игры - вопросы на время.
По кнопке "Старт" запускается таймер обратного отсчета, кнопка превращается в "Далее" и, пока работает таймер, нажимается несколько раз, отображая следующий вопрос. По завершении таймера кнопка делается обратно в "Старт" и можно начинать следующий раунд игры. Нужно выдержать паузу в несколько секунд, чтобы по завершении времени случайно не нажать на запуск следующего раунда, чтобы обсудить результаты.
Делаю так:
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 сек не реагирует, зато потом стартует столько раз, сколько было нажатий в момент паузы.
Как победить?
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
22.04.2015, 18:13     Как сделать паузу — запретить нажатие кнопок на 5 секунд?
Посмотрите здесь:

Android Как поставить поставить AsyncTask на паузу?
Android Таймер на паузу
Android Как запретить закрытие активити?
Как повесить прогресс диалог секунд на 10? Android
Android Нажатие кнопок в стороннем приложении
Как запретить использовать Scroll руками? Android
Android Как сделать, чтобы на всех дисплеях координаты кнопок были одинаковы?
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 129
22.04.2015, 18:37     Как сделать паузу — запретить нажатие кнопок на 5 секунд? #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();
                }
    }
}
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 643
22.04.2015, 18:40     Как сделать паузу — запретить нажатие кнопок на 5 секунд? #3
Попробуй отключить кнопку
Java
1
твояКнопка.setClickable(false);
+1
115 / 86 / 7
Регистрация: 24.08.2010
Сообщений: 591
22.04.2015, 18:54  [ТС]     Как сделать паузу — запретить нажатие кнопок на 5 секунд? #4
Цитата Сообщение от Hedd Посмотреть сообщение
onClickListener
у меня такого вообще нет нигде. Это что, обработчик нажатия?
Java
1
public void btStart_Click(View v)
Цитата Сообщение от Hedd Посмотреть сообщение
Поток Thread не вижу где прописан нормально
Такого тоже нет, один поток.
Цитата Сообщение от Mikalai Посмотреть сообщение
твояКнопка.setClickable(false);
Неа, не помогает, так же всё
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 129
22.04.2015, 19:11     Как сделать паузу — запретить нажатие кнопок на 5 секунд? #5
+1, Советую к освоению:
OnClickListener - http://startandroid.ru/ru/uroki/vse-...primere-button
Thread - http://developer.alexanderklimov.ru/...ory/thread.php
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 643
22.04.2015, 19:12     Как сделать паузу — запретить нажатие кнопок на 5 секунд? #6
Скинь весть код и хмл тоже.
+1
115 / 86 / 7
Регистрация: 24.08.2010
Сообщений: 591
22.04.2015, 19:45  [ТС]     Как сделать паузу — запретить нажатие кнопок на 5 секунд? #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 Посмотреть сообщение
Скинь весть код и хмл тоже.
Весь код я хочу продать за пару миллионов евро )))
А что, так должно работать?
Mikalai
248 / 224 / 91
Регистрация: 11.01.2015
Сообщений: 643
22.04.2015, 20:07     Как сделать паузу — запретить нажатие кнопок на 5 секунд? #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

Вариантов много ещё )))
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
23.04.2015, 11:16     Как сделать паузу — запретить нажатие кнопок на 5 секунд?
Еще ссылки по теме:

Basic4Android Как реализовать паузу во время выполнения программы
Android Как запретить обновляться программе?
Android Сделать общие экранные кнопки (аналог экранных кнопок назад, домой, меню)
Android Как правильно сделать паузу в ходе работы приложения?
Сделать паузу перед закрытием AlertDilaog Android

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

Или воспользуйтесь поиском по форуму:
+1
115 / 86 / 7
Регистрация: 24.08.2010
Сообщений: 591
23.04.2015, 11:16  [ТС]     Как сделать паузу — запретить нажатие кнопок на 5 секунд? #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
Yandex
Объявления
23.04.2015, 11:16     Как сделать паузу — запретить нажатие кнопок на 5 секунд?
Ответ Создать тему
Опции темы

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