С Новым годом! Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.55/11: Рейтинг темы: голосов - 11, средняя оценка - 4.55
 Аватар для KorPaEv
58 / 34 / 8
Регистрация: 08.07.2011
Сообщений: 235

Обработчик события ToggleButton

04.12.2015, 06:23. Показов 2031. Ответов 2
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Доброго времени суток!
Имеется ToggleButton на форме
На кнопку прикручена функция, которая вызывает форму Yes/No
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
public void ToggleButtonClick(View view)
    {
        switch (view.getId())
        {
            case R.id.tgbRelayOne:
            {
                ShowAlertDialog(tgbOne);
                break;
            }
        }
     }
 
    public void ShowAlertDialog(ToggleButton tButton)
    {
        if (tButton.isChecked()) tButton.setChecked(true);
        else tButton.setChecked(false);
 
        AlertDialog.Builder alertDialog = new AlertDialog.Builder(MainActivity.this);
 
        alertDialog.setTitle("Изменить состояние...");
        alertDialog.setMessage("Изменить состояние принудительно?");
 
        alertDialog.setPositiveButton("ДА", new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog,int which)
            {
                SavePerfomance("", false);
            }
        });
 
        alertDialog.setNegativeButton("НЕТ", new DialogInterface.OnClickListener()
        {
            public void onClick(DialogInterface dialog, int which)
            {
                dialog.cancel();
            }
        });
        alertDialog.show();
    }
Соответственно когда я нажимаю на кнопку у меня фактически кнопка нажимается до того как вылезло окно с вопросом и если я тыкаю нет, то кнопка остается нажатой - это неверно, если я нажимаю нет, то состояние кнопки не должно меняться, если же да, то состояние кнопки переходит в нажато..
Я пробовал передать состояние в форму Да-Нет но форма вызывается уже после смены состояния фактически как показал отладчик..
Каким образом мне сохранять состояние и по нажатию нет - не менять его??
0
Лучшие ответы (1)
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
04.12.2015, 06:23
Ответы с готовыми решениями:

ListView, ToggleButton, SQLite, CursorAdapter. Как найти idItem в ListView, где была нажата ToggleButton?
Добрый день. Затрудняюсь понять один момент: У меня есть ListView, который заполнен Items. Каждый Item - это свой XML. Пока...

Не работает обработчик события кнопки
Не могу разобраться почему выскакивает ошибка..пока только учусь...

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

2
2884 / 2296 / 769
Регистрация: 12.05.2014
Сообщений: 7,978
04.12.2015, 16:02
Цитата Сообщение от KorPaEv Посмотреть сообщение
if (tButton.isChecked()) tButton.setChecked(true); else tButton.setChecked(false);
што это такое?
2
535 / 504 / 114
Регистрация: 12.03.2014
Сообщений: 1,671
04.12.2015, 17:25
Лучший ответ Сообщение было отмечено KorPaEv как решение

Решение

Цитата Сообщение от Паблито Посмотреть сообщение
што это такое?
Похоже на
Java
1
boolean b = String.valueOf(button.isChecked()).equals("true");
Добавлено через 59 минут
KorPaEv, если серьезно - при нажатии на эту кнопку она сразу переключается, до вызова onClick(). Но можно установить onTouchListener
Java
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
final ToggleButton button = (ToggleButton) findViewById(R.id.toggle);
button.setOnTouchListener(new View.OnTouchListener() {
     @Override
    public boolean onTouch(View v, MotionEvent event) {
        if(event.getAction() == MotionEvent.ACTION_UP) {
            if(button.isChecked()) {
                button.setChecked(false);
            } else {
                showCheckedDialog(button);
            }
        }
 
        return true;
    }
});
И метод для вызова диалога
Java
1
2
3
4
5
6
7
8
9
10
11
12
    private void showCheckedDialog(final ToggleButton button) {
        AlertDialog.Builder builder = new AlertDialog.Builder(button.getContext());
        builder.setPositiveButton("Да", new DialogInterface.OnClickListener() {
            @Override
            public void onClick(DialogInterface dialog, int which) {
                button.setChecked(true);
            }
        });
        builder.setNegativeButton("Нет", null);
 
        builder.show();
    }
2
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
04.12.2015, 17:25
Помогаю со студенческими работами здесь

Как в одном обработчике события запустить другой обработчик события
Есть список listView1, который заполняется из массива PeopleListprivate void listView1_RetrieveVirtualItem(object sender,...

Почему когда я вешаю обработчик события на ячейку и этот обработчик срабатывает, то оказывается, он сработал совершенно для ДРУГОЙ ячейки?
Да, почему? Скропаем DataGridView; кинем на форму listBox2 и listBox1 и напишем такой обработчик для события EditingControlShowing...

Обработчик события
При добавлении пользователя в группу «Контент-редакторы» - уведомлять об этом на email других пользователей группы Контент-редакторы....

Обработчик события
Наследовал Класс EventArgs class EvenTrade:EventArgs { public PictureBox a; } и при нажатии на...

Обработчик события
Как можно сделать так На 2 картинке когда нажимаешь "Да" открывается на текущем странице. А на 1 картинке открылся не перейдя новую...


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

Или воспользуйтесь поиском по форуму:
3
Ответ Создать тему
Новые блоги и статьи
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
Модель микоризы: классовый агентный подход
anaschu 02.01.2026
Раньше это было два гриба и бактерия. Теперь три гриба, растение. И на уровне агентов добавится между грибами или бактериями взаимодействий. До того я пробовал подход через многомерные массивы,. . .
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост.
Programma_Boinc 28.12.2025
Советы по крайней бережливости. Внимание, это ОЧЕНЬ длинный пост. Налог на собак: https:/ / **********/ gallery/ V06K53e Финансовый отчет в Excel: https:/ / **********/ gallery/ bKBkQFf Пост отсюда. . .
Кто-нибудь знает, где можно бесплатно получить настольный компьютер или ноутбук? США.
Programma_Boinc 26.12.2025
Нашел на реддите интересную статью под названием Anyone know where to get a free Desktop or Laptop? Ниже её машинный перевод. После долгих разбирательств я наконец-то вернула себе. . .
Thinkpad X220 Tablet — это лучший бюджетный ноутбук для учёбы, точка.
Programma_Boinc 23.12.2025
Рецензия / Мнение/ Перевод Нашел на реддите интересную статью под названием The Thinkpad X220 Tablet is the best budget school laptop period . Ниже её машинный перевод. Thinkpad X220 Tablet —. . .
PhpStorm 2025.3: WSL Terminal всегда стартует в ~
and_y87 14.12.2025
PhpStorm 2025. 3: WSL Terminal всегда стартует в ~ (home), игнорируя директорию проекта Симптом: После обновления до PhpStorm 2025. 3 встроенный терминал WSL открывается в домашней директории. . .
Как объединить две одинаковые БД Access с разными данными
VikBal 11.12.2025
Помогите пожалуйста !! Как объединить 2 одинаковые БД Access с разными данными.
Новый ноутбук
volvo 07.12.2025
Всем привет. По скидке в "черную пятницу" взял себе новый ноутбук Lenovo ThinkBook 16 G7 на Амазоне: Ryzen 5 7533HS 64 Gb DDR5 1Tb NVMe 16" Full HD Display Win11 Pro
Музыка, написанная Искусственным Интеллектом
volvo 04.12.2025
Всем привет. Некоторое время назад меня заинтересовало, что уже умеет ИИ в плане написания музыки для песен, и, собственно, исполнения этих самых песен. Стихов у нас много, уже вышли 4 книги, еще 3. . .
От async/await к виртуальным потокам в Python
IndentationError 23.11.2025
Армин Ронахер поставил под сомнение async/ await. Создатель Flask заявляет: цветные функции - провал, виртуальные потоки - решение. Не threading-динозавры, а новое поколение лёгких потоков. Откат?. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru