Форум программистов, компьютерный форум, киберфорум
Наши страницы

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

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

Checkbox and RadioButton проверка состояния - Программирование Android

09.05.2017, 02:35. Просмотров 563. Ответов 29
Метки нет (Все метки)

Доброго дня, вечера и ночи!

Заключительная часть: Возможно ли без прописывания слушателя проверить состояние CheckBox по нажатию кнопки: checkbox.isChecked() ?

Основная часть: Все устанавливается и запускается, но при нажатие на кнопку, на телефоне выскакивает, что в приложение обнаружена ошибка. После этого оно закрывается.
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
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
public class MainActivity extends AppCompatActivity {
 private TextView m;
 private CheckBox chbox;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
        Button button;
        CheckBox chbox;
        button = (Button) findViewById(R.id.button);
        chbox = (CheckBox) findViewById(R.id.checkBox);
 
 m = (TextView) findViewById(R.id.text);
    }
 
   
   
 
   
    public void testCheck(View v) {
       
 
       
      
                if (chbox.isChecked())
                   m.setText("Вкл");
                else
                    m.setText("Выкл");
 
    }
}
Вступление: С программированием под андроид знакомлюсь на ходу. Для своих нужд потребовалось создать приложение.Суть такая: на главном экране в виде таблицы порядка 100 кнопок (даже немного побольше) В зависимости от того, какая нажата кнопка, в другом окне (вроде здесь оно называется activity) выводятся данные. Все бы ничего, но эти данные еще зависит от других параметров. Эти параметры я определил под 3 радиокнопки и 2 чекбокса(причем два чекбокса одновременно не должны быть включены и, по крайней мере, один из них был выбран) Итого 6 различных вариантов. Но вот что-то с проверкой состояния не задалось. Для тренировки создал тестовый проект с кнопкой Button и текстовым полем TextView, но и там меня постиг крах. Буду признателен, если мне покажут на мои ошибки и направят на путь истинный
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
Similar
Эксперт
41792 / 34177 / 6122
Регистрация: 12.04.2006
Сообщений: 57,940
09.05.2017, 02:35
Здравствуйте! Я подобрал для вас темы с ответами на вопрос Checkbox and RadioButton проверка состояния (Программирование Android):

Сохранение состояния Checkbox в Listview - Программирование Android
Возникла проблема с сохранением состояния checkbox'ов в Listview. Listview состоит из текста, напротив которого стоит чекбокс. Требуется...

Как передать сервису состояния checkbox из MainActivity? - Программирование Android
Есть service который запускается из MainActivity и в определённое время запускает метод. Но этот метод должен запускаться только если...

Проверка состояния checkbox - JavaScript
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN"> <HTML> <HEAD> <TITLE>Поштова форма</TITLE> <META...

Проверка состояния checkbox в datagrid - C# WPF
Есть тест, нужно определить какой вариант ответа выбран в каждом вопросе. Как проверять какой именно checkbox выбран?

.NET 4.x Проверка состояния множества CheckBox наиболее оптимальным способом - Visual Basic .NET
Ребят, а как работать с чекбоксами когда их много? Когда он один понятно, If CheckBox1.Checked = True Then ... Else... End...

Запоминание состояния radiobutton'ов - JavaScript
Всем привет! То ли не спал много, то ли действительно сложно. В общем ребята помощь нужна. Имеется: <div><label> <input...

29
demixdn
228 / 175 / 54
Регистрация: 31.10.2016
Сообщений: 401
11.05.2017, 11:26 #16
Цитата Сообщение от LexSan Посмотреть сообщение
Caused by: java.lang.NullPointerException
05-10 21:04:17.876: E/AndroidRuntime(21122): at com.example.fedor.testcheck.MainActivity.testCheck(MainActivity.java:29)
лог говорит, что ваш чекбокс null. Поэтому и спрашиваю.
Цитата Сообщение от Паблито Посмотреть сообщение
нужен актуальный код + разметка + лог ошибки
++
0
LexSan
1 / 1 / 0
Регистрация: 09.05.2017
Сообщений: 15
11.05.2017, 11:32  [ТС] #17
Паблито, код я весь выложил. В разметке нет ничего особенного: чекбокс, текствью и кнопка, как студия все создала, разметка RelativeLayout и к кнопке добавил событие android:onClick ="testCheck " Вечером могу выложить
Лог ошибки был выше
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
11.05.2017, 11:37 #18
ключевое слово - актуальный код + разметка + лог ошибки
если ты считаешь что там все обычное и смотреть там нечего, что ты забыл на форуме в таком случае? тебе не нужна помощь, сам все знаешь
0
LexSan
1 / 1 / 0
Регистрация: 09.05.2017
Сообщений: 15
11.05.2017, 12:59  [ТС] #19
Паблито, в том то и дело, что я ничего не знаю и если бы знал, то здесь бы меня не было, тем более по такому простейшему вопросу,как работа с элементами. С андроид студио и java я знаком, как неделю. Разметку, как писал выше, выложу вечером, а про "ничего особенного" - надеялся на ваши экстрасенсорные способности, предварительно написав, что за элементы присутствуют

Добавлено через 1 час 7 минут
UPD. Вчера в testCheck убрал полностью все условие . добавил
Java
1
  m.setText("Здесь могла бы быть ваша реклама")
Приложение также завершилось с ошибкой по нажатию кнопки
0
vxg
Модератор
3181 / 1984 / 226
Регистрация: 13.01.2012
Сообщений: 7,669
11.05.2017, 14:50 #20
LexSan, я создал новый проект, скопировал в MainActivity ваш код, убрал строчки
Java
1
2
3
Button button;
CheckBox chbox;
button = (Button) findViewById(R.id.button);
закинул на разметку TextView, CheckBox и Button, прописал в Button
XML
1
android:onClick="testCheck"
запустил - все работает - статус галочки корректно обновляется в текстовом поле при нажатии на кнопку. подозреваю что в вашей разметке нет tools:context=".MainActivity"
0
LexSan
1 / 1 / 0
Регистрация: 09.05.2017
Сообщений: 15
11.05.2017, 15:09  [ТС] #21
vxg, спасибо вам большое! Через пару часов проверю. А можете объяснить почему мы убираем button = (Button) findViewById(R.id.button); ?
0
vxg
Модератор
3181 / 1984 / 226
Регистрация: 13.01.2012
Сообщений: 7,669
11.05.2017, 15:30 #22
LexSan, а вы эту ссылку где-то используете? я не увидел где вы ее используете поэтому убрал
0
LexSan
1 / 1 / 0
Регистрация: 09.05.2017
Сообщений: 15
11.05.2017, 15:42  [ТС] #23
vxg, В основном проекте -это используется для определения, какая конкретно кнопка была нажата
0
Pablito
2525 / 2004 / 624
Регистрация: 12.05.2014
Сообщений: 7,030
Завершенные тесты: 1
11.05.2017, 15:43 #24
около 100 кнопок и у каждой прописано testClick значит что будет создано около 100 OnClickListener-ов
это не смертельно, но от души и зря тратится память
1
LexSan
1 / 1 / 0
Регистрация: 09.05.2017
Сообщений: 15
11.05.2017, 21:29  [ТС] #25
Паблито, да понимаю, что очень ресурсоемко, но необходимо получить информацию в течении 10-15 секунд и если кнопки распределить на нескольких activity,то прыгая по ним невозможно будет успеть. Поэтому я выбрал такой подход. Не знаю насколько это облегчит память, но на все кнопки у меня одно событии onClick

Добавлено через 4 часа 19 минут
Цитата Сообщение от Vladimir93 Посмотреть сообщение
А попробуйте унаследоваться просто от Activity
Error: (9, 35) error: cannot find symbol class Activity выходит такая ошибка

Добавлено через 3 минуты
Цитата Сообщение от vxg Посмотреть сообщение
подозреваю что в вашей разметке нет tools:context=".MainActivity"
tools:context="com.example.fedor.testcheck.MainActivity"> присутствует
Java
1
tools:context="com.example.fedor.testcheck.MainActivity">
, но все равно ничего не получилось. Дело видно в моих кривых руках

Добавлено через 3 минуты
По просьбе трудящихся:
Разметка
XML
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
<?xml version="1.0" encoding="utf-8"?>
<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:app="http://schemas.android.com/apk/res-auto"
    xmlns:tools="http://schemas.android.com/tools"
    android:layout_width="match_parent"
    android:layout_height="match_parent"
    tools:context="com.example.fedor.testcheck.MainActivity">
 
 
    <Button
        android:id="@+id/button"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Button"
        android:layout_below="@+id/checkBox"
        android:layout_alignRight="@+id/checkBox"
        android:layout_alignEnd="@+id/checkBox"
        android:layout_marginTop="51dp"
        android:onClick="testCheck"/>
 
    <CheckBox
        android:id="@+id/checkBox"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="CheckBox" />
 
    <TextView
        android:id="@+id/textView"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:layout_below="@+id/checkBox"
        android:layout_marginLeft="56dp"
        android:layout_marginStart="56dp"
        android:layout_marginTop="15dp"
        android:layout_toEndOf="@+id/checkBox"
        android:layout_toRightOf="@+id/checkBox"
        android:text="TextView" />
</RelativeLayout>
Код:
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
package com.example.fedor.testcheck;
import android.support.v7.app.AppCompatActivity;
import android.os.Bundle;
import android.view.View;
import android.widget.Button;
import android.widget.CheckBox;
import android.widget.TextView;
 
public class MainActivity extends AppCompatActivity {
    private TextView m;
    private CheckBox chbox;
 
    @Override
    protected void onCreate(Bundle savedInstanceState) {
        super.onCreate(savedInstanceState);
        setContentView(R.layout.activity_main);
       
        chbox = (CheckBox) findViewById(R.id.checkBox);
 
        m = (TextView) findViewById(R.id.text);
    }
 
 
 
    public void testCheck(View v) {
 
 
        if (chbox.isChecked())
            m.setText("Вкл");
        else
            m.setText("Выкл");
 
    }
}
Добавлено через 1 час 8 минут
Всем большое спасибо, что терпели меня. Убрал все лишнее и в методе просто прописал:
Java
1
2
3
4
5
6
7
public void testCheck(View v) {
        TextView textView= (TextView) findViewById(R.id.textView);
        CheckBox checkBox=(CheckBox) findViewById(R.id.checkBox);
        if (checkBox.isChecked())
            textView.setText("Вкл");
        else
           textView.setText("Выкл");
И все заработало
0
vxg
Модератор
3181 / 1984 / 226
Регистрация: 13.01.2012
Сообщений: 7,669
11.05.2017, 22:07 #26
LexSan, у меня и так все работало, получение ссылок в методе это масло масляное но мы конечно рады что вы удалили нечто непонятное что лишнее и оно заработало хоть так
0
LexSan
1 / 1 / 0
Регистрация: 09.05.2017
Сообщений: 15
11.05.2017, 22:26  [ТС] #27
Лишнее это - private CheckBox chb; private TextView m; и т.д что уже не использовалось в проекте.
Я и сам не понимаю, почему в предыдущем варианте у меня при нажатие на кнопку вылетало с ошибкой. Кривые руки тому виной, наверное что-то упустил из виду, хотя вы вроде все скопировали и у вас все запустилось
0
Vladimirys
309 / 206 / 25
Регистрация: 16.01.2010
Сообщений: 589
12.05.2017, 00:32 #28
Так у вас в итоге, разные все такие idишки были то? В вашем первом примере так
Java
1
m = (TextView) findViewById(R.id.text);
А в рабочем, и в разметке, уже вот так.
Java
1
TextView textView= (TextView) findViewById(R.id.textView)
2
LexSan
1 / 1 / 0
Регистрация: 09.05.2017
Сообщений: 15
12.05.2017, 06:53  [ТС] #29
Vladimirys, спасибо! Не только с руками у меня проблема, но и с глазами. Исправил и... О чудо - все заработало.
1
vxg
12.05.2017, 07:17     Checkbox and RadioButton проверка состояния
  #30

Не по теме:

LexSan, ужас)

0
MoreAnswers
Эксперт
37091 / 29110 / 5898
Регистрация: 17.06.2006
Сообщений: 43,301
12.05.2017, 07:17
Привет! Вот еще темы с ответами:

Активность TextBox в зависимости от состояния Radiobutton - C#
Помогите пожайлуйста, есть 2 радиобатона, текстбокс, одна кнопка,нужно чтобы при нажатии на радиобатон1 деактивировался текстбокс1, а при...

Как сделать проверку состояния RadioButton? - C#
Как сделать проверку на Radiobutton(chacked)?

.NET 4.x Enum: Выбор значения в зависимости от состояния RadioButton - C# WPF
У меня есть enum: public enum DeliveryTimeTypes { byMediumTerm, byGuaranteedTerm } И две...

Заполнение и вывод текста ListBox в зависимости от состояния RadioButton - Visual Basic .NET
Цель: при клике на 1 переключатель выводить в листбокс Item1, item2, при клике на 2 переключатель Item3, item4. Пока он ничего не...


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

Или воспользуйтесь поиском по форуму:
30
12.05.2017, 07:17
Ответ Создать тему
Опции темы

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