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

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

Войти
Регистрация
Восстановить пароль
 
Vasilisa111
0 / 0 / 0
Регистрация: 27.01.2016
Сообщений: 3
#1

CheckBox и Timer - Программирование Android

27.01.2016, 21:19. Просмотров 226. Ответов 9
Метки нет (Все метки)

Здравствуйте. Я только недавно начала изучать программирование. Помогите пожалуйста.
Есть CheckBox1 и CheckBox2.
Есть editText1 в котором пользователь вводит ответ.
Как сделать: если флажок стоит на CheckBox1 включался таймер с обратным отсчетом на 5 секунд (если CheckBox2 то 10 секунд). После истечения времени(если не успели ответить) editText блокировался.
Курсор переходит на следующий editText2 и все повторяется.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
27.01.2016, 21:19     CheckBox и Timer
Посмотрите здесь:

Timer - Программирование Android
Я пишу приложение.Сначала для красоты показывается прогресс бар.Потом через 3сек меняется сообщение.но меняется только без таймера.а с...

Timer и AppWidgetProvider - Программирование Android
С Новым Годом, господа! Успехов всем в Новом Году! А мой вопрос такой: как остановить таймер в виджете... код в архиве...

Обращение к UI из Timer - Программирование Android
при помощи какой функции из таймера можно обратиться к элементу UI??

Timer и TimerTask - Программирование Android
Пишу программу для андроида в eclipse. Столкнулся с такой проблемой: нужно чтобы после нажатия на картинку она через секунду сменилась на...

Timer в ListView - Программирование Android
Добрый вечер! Поставлена задача: нужно создать ListView в элементах которого тикало время от даты создания объекта. Я пошел по самому...

timer или postdelayed - Программирование Android
Мне во время работы приложения в фоновом, да и не только, нужно раз в секунду узнать сколько время. hh =...

После регистрации реклама в сообщениях будет скрыта и будут доступны все возможности форума.
Dantes2104
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
27.01.2016, 22:05     CheckBox и Timer #2
Первый пример, когда нету обработчика, то есть есть ты не запускаешь метод который проверяет нажат тот или иной чек бокс. По-моему лучше такая обработка результатов. Когда человек захотел, тогда и начал отсчёт
Код
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
CheckBox CheckBox1  = //что-то там;
    CheckBox CheckBox2 = //что-то там;
    EditText et = //что-то там;
    EditText et2 = //что-то там
    protected void onCreate(Bundle savedInstanceState) {
super.onCreate(savedInstanceState);
CheckBox1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SystemClock.sleep(5000);
                et.setEnabled(false);
                //если требуется активировать второй EditText, то + et.setSelected(true);
            }
        });
        CheckBox2.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                SystemClock.sleep(10000);
                et.setEnabled(false);
//если требуется активировать второй EditText, то + et.setSelected(true);
                
            }
        });
}



Второй метод хорош например в играх когда после запуска активити сразу идёт таймер.
Пример
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
CheckBox CheckBox1  = //что-то там;
    CheckBox CheckBox2 = //что-то там;
    EditText et = //что-то там;
    EditText et2 = //что-то там
    public static void metod(){
if (CheckBox1.isChecked()){
SystemClock.sleep(5000);
et.setEnabled(false);
                //если требуется активировать второй EditText, то + et.setSelected(true);
}
if (CheckBox1.isChecked()){
SystemClock.sleep(10000)
et.setEnabled(false);
                //если требуется активировать второй EditText, то + et.setSelected(true);
}}


На счёт et.setEnabled(false) не очень уверен, но попробовать стоит.

Добавлено через 52 секунды
Заметь что на втором примере используется метод metod. И если будешь копировать не забудь его запустить.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
27.01.2016, 22:14     CheckBox и Timer #3
Убийца Пушкина, вы тестировали то, что предлагаете?
Даю рупь за 100, что при таком коде у играющего нет ни малейшего шанса ввести что-либо в поле ввода ни в течение 1-й, ни 2-х, ни 10-ти секунд, ни вообще никогда
Vasilisa111
0 / 0 / 0
Регистрация: 27.01.2016
Сообщений: 3
28.01.2016, 08:55  [ТС]     CheckBox и Timer #4
Цитата Сообщение от Dantes2104 Посмотреть сообщение
Первый пример, когда нету обработчика, то есть есть ты не запускаешь метод который проверяет нажат тот или иной чек бокс. По-моему лучше такая обработка результатов. Когда человек захотел, тогда и начал отсчёт
Обработчик есть Activity. (implements View.OnKeyListener). Я хочу сделать, чтобы таймер запускался по желанию. Есть список примеров, вверху есть 2 CheckBox. Если нажат какой-то CheckBox на каждом примере будет запускаться таймер когда в editText встанет курсор.
Получается если введен ответ (правильный-неправильный) раньше, то таймер должен остановится.
Если не нажат, то все идет как есть (без таймера).
Не могу сообразить как это объединить все.

CheckBox и Timer
Valakin
430 / 96 / 15
Регистрация: 21.02.2015
Сообщений: 729
28.01.2016, 09:19     CheckBox и Timer #5
Цитата Сообщение от Armagedo Посмотреть сообщение
Убийца Пушкина

Поищите о чем пишет Armagedo, наверное о том что блокировать UI плохая практика
Dantes2104
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
28.01.2016, 12:30     CheckBox и Timer #6
Попробуйте вот так. С использованием потоков. Как только кончается время, идёт проверка и действие.
Код
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
66
67
import android.app.Activity;
import android.os.AsyncTask;
import android.os.Bundle;
import android.util.Log;
import android.view.View;
import android.widget.CheckBox;
import android.widget.EditText;
 
class Test extends Activity{
    CheckBox cb = new CheckBox(this);
    EditText et = new EditText(this);
    EditText et1 = new EditText(this);
    CheckBox cb1 = new CheckBox(this);
 
    //что-то там
 
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        cb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new Task1().execute(5L);
            }
        });
        cb1.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                new Task1().execute(10L);
            }
        });
    }
 
    public void abc(long integer) {
        Thread th = new Thread();
        try{
            th.sleep(integer * 1000);
        } catch (InterruptedException e) {
            Log.e("ERROR", "Ошибка");
        }
    }
 
    //Используем потоки
    class Task1 extends AsyncTask<Long,Void,Void> {
 
 
        @Override
        protected Void doInBackground(Long... longs) {
 
            abc(longs[0]);
 
            return null;
        }
        
        @Override
        protected void onPostExecute(Void aVoid) {
            String str = "Проверка";
            if (et.getText().toString().equals(str)){
                //Действия
            }else{
                et.setEnabled(false);
                et1.setSelected(true);
            }
        }
    }
}
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
28.01.2016, 12:52     CheckBox и Timer #7
Dantes2104 aka Убийца Пушкина, это уже получше.
Только нахиба вам в асинктаске дополнительный поток?
Т.е. мало того, что вы ушли асинктаском с главного потока, так вы еще и из асинктаска стараетесь убежать.
Смысл этого в данном конкретном случае?
Dantes2104
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
28.01.2016, 13:11     CheckBox и Timer #8
По другому я не знаю как это сделать.
Armagedo
208 / 208 / 60
Регистрация: 22.08.2014
Сообщений: 644
28.01.2016, 13:19     CheckBox и Timer #9
Dantes2104, использование дополнительного потока в асинктаске сродни тому, что вы, заплатив за гостинницу, приезжаете, заходите в номер и вместо того, чтобы тут же лечь на удобную кровать и поспать с дороги, вы, наоборот, хватаете с кровати подушку и одеяло и бежите в другую гостинницу, чтобы поспать там, а потом, выспавшись, опять вернуться.
Я бы спал прямо в первом номере...

P.S. Гляньте в словарик перевод "спать" на басурмансикй, если чё...
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
28.01.2016, 13:34     CheckBox и Timer
Еще ссылки по теме:

Timer для чайника - Программирование Android
Второй день издтваюсь над андроид студио. Проблем с хелловордои небыло, а воь с тпймером застопорил. Подскажите как это проще реализовать....

Использование Timer в андроид приложениях - Программирование Android
Всем привет. Люди добрые, как в андроид приложениях использовать таймер? Есть приложение, при запуске открывается Activity1. Нужно...

Что будет если не завершена задача в Timer - Программирование Android
Всем привет, вот что заинтересовало, допустим есть какая либо задача которая выполняется с интервалом в 5 секунд. Создается новый поток в...

Android CheckBox - Программирование Android
Здравствуйте. У меня есть такая проблема. Нашими два класса, например (Main.java и Second.java) Main.java класс У меня есть Checkbox&quot;....


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

Или воспользуйтесь поиском по форуму:
Dantes2104
0 / 0 / 0
Регистрация: 13.01.2015
Сообщений: 61
28.01.2016, 13:34     CheckBox и Timer #10
Наверное можно сделать так
Код
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
CheckBox cb = new CheckBox(this);
EditText et = new EditText(this);
EditText et1 = new EditText(this);
cb.setOnClickListener(new View.OnClickListener() {
            @Override
            public void onClick(View view) {
                Thread th = new Thread();
                try{
                  th.sleep(5000);
                } catch (InterruptedException e) {
                  Log.e("ERROR", "Ошибка");
                }
                String str = "Проверка";
                if (et.getText().toString().equals(str)){
                  //Действия
                }else{
                  et.setEnabled(false);
                  et1.setSelected(true);
               }
            }
        });


По-моему так лучше. Если, конечно th.sleep(5000); не перекрывает выполнение данного потока.
Yandex
Объявления
28.01.2016, 13:34     CheckBox и Timer
Ответ Создать тему
Опции темы

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