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

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

04.12.2015, 06:23. Показов 2037. Ответов 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
Ответ Создать тему
Новые блоги и статьи
WordPad для Windows 11
Jel 10.01.2026
WordPad для Windows 11 — это приложение, которое восстанавливает классический текстовый редактор WordPad в операционной системе Windows 11. После того как Microsoft исключила WordPad из. . .
Classic Notepad for Windows 11
Jel 10.01.2026
Old Classic Notepad for Windows 11 Приложение для Windows 11, позволяющее пользователям вернуть классическую версию текстового редактора «Блокнот» из Windows 10. Программа предоставляет более. . .
Почему дизайн решает?
Neotwalker 09.01.2026
В современном мире, где конкуренция за внимание потребителя достигла пика, дизайн становится мощным инструментом для успеха бренда. Это не просто красивый внешний вид продукта или сайта — это. . .
Модель микоризы: классовый агентный подход 3
anaschu 06.01.2026
aa0a7f55b50dd51c5ec569d2d10c54f6/ O1rJuneU_ls https:/ / vkvideo. ru/ video-115721503_456239114
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR
ФедосеевПавел 06.01.2026
Owen Logic: О недопустимости использования связки «аналоговый ПИД» + RegKZR ВВЕДЕНИЕ Введу сокращения: аналоговый ПИД — ПИД регулятор с управляющим выходом в виде числа в диапазоне от 0% до. . .
Модель микоризы: классовый агентный подход 2
anaschu 06.01.2026
репозиторий https:/ / github. com/ shumilovas/ fungi ветка по-частям. коммит Create переделка под биомассу. txt вход sc, но sm считается внутри мицелия. кстати, обьем тоже должен там считаться. . . .
Расчёт токов в цепи постоянного тока
igorrr37 05.01.2026
/ * Дана цепь постоянного тока с сопротивлениями и напряжениями. Надо найти токи в ветвях. Программа составляет систему уравнений по 1 и 2 законам Кирхгофа и решает её. Последовательность действий:. . .
Новый CodeBlocs. Версия 25.03
palva 04.01.2026
Оказывается, недавно вышла новая версия CodeBlocks за номером 25. 03. Когда-то давно я возился с только что вышедшей тогда версией 20. 03. С тех пор я давно снёс всё с компьютера и забыл. Теперь. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru