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

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

Войти
Регистрация
Восстановить пароль
 
+1
117 / 88 / 8
Регистрация: 24.08.2010
Сообщений: 622
#1

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

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

Принцип игры - вопросы на время.
По кнопке "Старт" запускается таймер обратного отсчета, кнопка превращается в "Далее" и, пока работает таймер, нажимается несколько раз, отображая следующий вопрос. По завершении таймера кнопка делается обратно в "Старт" и можно начинать следующий раунд игры. Нужно выдержать паузу в несколько секунд, чтобы по завершении времени случайно не нажать на запуск следующего раунда, чтобы обсудить результаты.
Делаю так:
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 Запретить одновременное нажатие двух кнопок
Android Как правильно сделать паузу в ходе работы приложения?
Android Как сделать TimePicker c выбором минут и секунд?
Android Нажатие кнопок в стороннем приложении
Сделать паузу перед закрытием AlertDilaog Android
Android Как сделать, чтобы на всех дисплеях координаты кнопок были одинаковы?
Basic4Android Как реализовать паузу во время выполнения программы
После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Hedd
13 / 13 / 2
Регистрация: 21.01.2015
Сообщений: 131
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
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
22.04.2015, 18:40     Как сделать паузу — запретить нажатие кнопок на 5 секунд? #3
Попробуй отключить кнопку
Java
1
твояКнопка.setClickable(false);
+1
117 / 88 / 8
Регистрация: 24.08.2010
Сообщений: 622
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
Сообщений: 131
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
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
22.04.2015, 19:12     Как сделать паузу — запретить нажатие кнопок на 5 секунд? #6
Скинь весть код и хмл тоже.
+1
117 / 88 / 8
Регистрация: 24.08.2010
Сообщений: 622
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
256 / 232 / 93
Регистрация: 11.01.2015
Сообщений: 651
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 секунд?
Еще ссылки по теме:
Android Сделать общие экранные кнопки (аналог экранных кнопок назад, домой, меню)
Android Как поставить поставить AsyncTask на паузу?
Как повесить прогресс диалог секунд на 10? Android
Android Таймер на паузу
Android Как запретить закрытие активити?

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

Или воспользуйтесь поиском по форуму:
+1
117 / 88 / 8
Регистрация: 24.08.2010
Сообщений: 622
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 секунд?
Ответ Создать тему
Опции темы

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