Форум программистов, компьютерный форум, киберфорум
Программирование Android
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.91/11: Рейтинг темы: голосов - 11, средняя оценка - 4.91
0 / 0 / 0
Регистрация: 20.10.2017
Сообщений: 8

Обработка нажатия Radiogroup и Spinner на Activity

19.11.2017, 04:00. Показов 2019. Ответов 4
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
В рамках activity имеется RadioGroup и Spinner, посредством которых выполняются некоторые арифметические действия:
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
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
public class MessageActivity1 extends AppCompatActivity {
 
TextView celzadach, poyas4, poyas5, poyas6;
RadioGroup rgroup;
RadioButton sravnenkr1, sravnenkr2, sravnenkr3;
Spinner spn2;
String prioritet[] = {"9", "8", "7", "6", "5", "4", "3", "2", "1"};
ArrayAdapter<String> adapter2;
double znachn1;
Button sootnesen1;
static double d, b;
 
@Override
protected void onCreate(Bundle savedInstanceState) {
    super.onCreate(savedInstanceState);
    setContentView(R.layout.activity_message1);
 
    celzadach = (TextView) findViewById(R.id.celzadach);
    Intent intent5 = getIntent();
    String message1 = intent5.getStringExtra("message1");
    celzadach.setText(message1);
 
    poyas4 = (TextView) findViewById(R.id.poyas4);
    poyas4.setText("Определение важности критериев сравнения относительно заявленной цели:");
 
    poyas5 = (TextView) findViewById(R.id.poyas5);
    poyas5.setText("Какой из сравниваемых критериев более предпочтительный?");
 
    poyas6 = (TextView) findViewById(R.id.poyas6);
    poyas6.setText("Предпочтительней на сколько?");
 
    sravnenkr1 = (RadioButton) findViewById(R.id.sravnenkr1);
    Intent intent6 = getIntent();
    String message2 = intent6.getStringExtra("message2");
    sravnenkr1.setText(message2);
 
    sravnenkr2 = (RadioButton) findViewById(R.id.sravnenkr2);
    Intent intent7 = getIntent();
    String message3 = intent7.getStringExtra("message3");
    sravnenkr2.setText(message3);
 
    sravnenkr3 = (RadioButton) findViewById(R.id.sravnenkr3);
    sravnenkr3.setText("Сравниваемые критерии одинаково важны");
 
    rgroup = (RadioGroup) findViewById(R.id.RadioGroup1);
 
 
    rgroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, @IdRes int q) {
            switch (q) {
                case R.id.sravnenkr1:
                    d = znachn1;
                    b = 1 / znachn1;
                    break;
                case R.id.sravnenkr2:
                    b = znachn1;
                    d = 1 / znachn1;
                    break;
                case R.id.sravnenkr3:
                    d = 1;
                    b = 1;
                    break;
            }
        }
    });
 
    spn2 = (Spinner) findViewById(R.id.spnPrioritet);
    adapter2 = new ArrayAdapter<String>(this, android.R.layout.simple_list_item_1, prioritet);
    spn2.setAdapter(adapter2);
    spn2.setOnItemSelectedListener(new AdapterView.OnItemSelectedListener() {
 
        @Override
        public void onItemSelected(AdapterView<?> adapterView, View view, int position2, long id) {
            switch (position2) {
                case 0:
                    znachn1 = 9;
                    break;
                case 1:
                    znachn1 = 8;
                    break;
                case 2:
                    znachn1 = 7;
                    break;
                case 3:
                    znachn1 = 6;
                    break;
                case 4:
                    znachn1 = 5;
                    break;
                case 5:
                    znachn1 = 4;
                    break;
                case 6:
                    znachn1 = 3;
                    break;
                case 7:
                    znachn1 = 2;
                    break;
                case 8:
                    znachn1 = 1;
                    break;
            }
        }
 
        @Override
        public void onNothingSelected(AdapterView<?> adapterView) {
        }
    });
 
    sootnesen1 = (Button) findViewById(R.id.sootnesen1);
    sootnesen1.setText("Далее");
    sootnesen1.setOnClickListener(new View.OnClickListener() {
 
        @Override
        public void onClick(View view) {
            Intent intent8 = new Intent(MessageActivity1.this, MessageActivity2.class);
            Toast toast1 = Toast.makeText(getApplicationContext(),"w0="+w0, Toast.LENGTH_SHORT);
            toast1.show();
            startActivity(intent8);
        }
 
    });
}
}
Однако, при нажатии Button обрабатывается только нажатие sravnenkr1 RadioGroup и case0 Spinner, абсолютно при любой выбранной комбинации элементов экрана, игнорируется обработка нажатия других RadioButton и case'сов, даже если ничего заранее не выбирать, а просто нажать Button обрабатывается sravnenkr1 RadioGroup и case0 Spinner.
Подскажите в чём проблема и возможный путь решения..

Добавлено через 11 часов 10 минут
Технически, я понял в чём проблема.. В принципе, код на Activity выполняется верно, всё вычисляется как надо.. Просто, если первым обрабатывать нажатие spinner'a, a потом уже radiogroup, тогда программа выполняется правильно. Я же (по логике) делал наоборот, сначала radiogroup потом spinner, из-за этого и выдавался не тот ответ..
Возможно ли сделать чтобы 1-ым всё же обрабатывался radiogroup, по логике такой вариант выполнения программы является верным, ну как верным, иначе она выполняется наоборот, с конца..
0
IT_Exp
Эксперт
34794 / 4073 / 2104
Регистрация: 17.06.2006
Сообщений: 32,602
Блог
19.11.2017, 04:00
Ответы с готовыми решениями:

Spinner переход в другое Activity
Добрый день. Подскажите пожалуйста как можно прописать преход тапом в списке Spinner до другого Acrivity? ...

Как найти Spinner из другого Activity и изменить выбранный в нем элемент?
Android Studio. У меня есть три кнопки на одном экране и спиннер на другом. Я пытаюсь найти спиннер, но выдает ошибку. Если поиск из...

Запрет на нажатия в activity
Здравствуйте. Есть небольшая проблема. Как запретить нажатия на элементы в активности на некоторое время(3 секунды). Время я устанавливаю...

4
145 / 134 / 22
Регистрация: 28.06.2015
Сообщений: 674
19.11.2017, 12:42
Так поменяйте, местами, код спиннера поставьте раньше чем радиобатон.
Код выполняться сверху вниз, и когда вы считаете значение в баттонах, данных от спинера просто нет.
Или вынесите расчет в отдельный метод, и взывайте его при условии что данные от всех виджетов поступили.
0
0 / 0 / 0
Регистрация: 20.10.2017
Сообщений: 8
19.11.2017, 21:52  [ТС]
Смена позиции кода radiogroup и spinner'а относительно друг друга как в файле .java, так и в .xml файле никаких изменений не дала..
0
145 / 134 / 22
Регистрация: 28.06.2015
Сообщений: 674
20.11.2017, 11:48
Из того что вы представили, других вариантов нет. Значит еще где то есть ошибки.
Опять же попробуйте получать позицию вот так

switch (spn2.getSelectedItemPosition())
P.S. Размещение на разметке никак на исполнение не влияет, только код java.
0
0 / 0 / 0
Регистрация: 20.10.2017
Сообщений: 8
20.11.2017, 23:41  [ТС]
Vladimir93, я попытался заблочить spinner при запуске activity, и включать его при нажатии на radiobutton,но никак, всё та же ошибка..
Возможно ли устранить дефолтную (по умолчанию) работу spinner'а, так чтобы он не выбирал значение при запуске activity, а выбирал только тогда когда я их выберу?
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
BasicMan
Эксперт
29316 / 5623 / 2384
Регистрация: 17.02.2009
Сообщений: 30,364
Блог
20.11.2017, 23:41
Помогаю со студенческими работами здесь

Обработка нескольких Spinner в Android Studio
Добрый день! Я только начинаю разбираться с программирование и назрел такой вопрос: в активити есть 3 Spinner. Допустим 1 - марка авто...

Переключение между Activity путём нажатия кнопки
работаю в eclips. создал два файла, в папку res\layout\activity_second.xml и activity_second2.xml потом классы посредством кторых будет...

Обработка onTouchEvent в Activity
Хочу в активити обрабатывать все прикосновения, независимого от того, были ли они на кнопке или на свободном пространстве. Однако после...

Обработка NFC в запущенной Activity
Доброго времени суток. Программа для чтения и записи NFC меток. Когда телефон подношу к NFC устройству телефон предлагает список...

Обработка FloatingActionButton в классе не наследующим класс Activity
Доброго времени суток. Пишу проект и столкнулся с такой проблемой. В своём приложении использую Tabs в ToolBar для удобного просмотра меню....


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

Или воспользуйтесь поиском по форуму:
5
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Вывод текста со шрифтом TTF с помощью SDL3_ttf
8Observer8 01.02.2026
Содержание блога В этой пошаговой инструкции создадим с нуля веб-приложение, которое выводит текст в окне браузера. Запустим на Android на локальном сервере. Загрузим Release на бесплатный. . .
SDL3 для Web (WebAssembly): Сборка C/C++ проекта из консоли
8Observer8 30.01.2026
Содержание блога Если вы откроете примеры для начинающих на официальном репозитории SDL3 в папке: examples, то вы увидите, что все примеры используют следующие четыре обязательные функции, а. . .
SDL3 для Web (WebAssembly): Установка Emscripten SDK (emsdk) и CMake для сборки C и C++ приложений в Wasm
8Observer8 30.01.2026
Содержание блога Для того чтобы скачать Emscripten SDK (emsdk) необходимо сначало скачать и уставить Git: Install for Windows. Следуйте стандартной процедуре установки Git через установщик. . . .
SDL3 для Android: Подключение Box2D v3, физика и отрисовка коллайдеров
8Observer8 29.01.2026
Содержание блога Box2D - это библиотека для 2D физики для анимаций и игр. С её помощью можно определять были ли коллизии между конкретными объектами. Версия v3 была полностью переписана на Си, в. . .
Инструменты COM: Сохранение данный из VARIANT в файл и загрузка из файла в VARIANT
bedvit 28.01.2026
Сохранение базовых типов COM и массивов (одномерных или двухмерных) любой вложенности (деревья) в файл, с возможностью выбора алгоритмов сжатия и шифрования. Часть библиотеки BedvitCOM Использованы. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL_LoadPNG (без SDL3_image)
8Observer8 28.01.2026
Содержание блога SDL3 имеет собственные средства для загрузки и отображения PNG-файлов с альфа-каналом и базовой работы с ними. В этой инструкции используется функция SDL_LoadPNG(), которая. . .
SDL3 для Android: Загрузка PNG с альфа-каналом с помощью SDL3_image
8Observer8 27.01.2026
Содержание блога SDL3_image - это библиотека для загрузки и работы с изображениями. Эта пошаговая инструкция покажет, как загрузить и вывести на экран смартфона картинку с альфа-каналом, то есть с. . .
Влияние грибов на сукцессию
anaschu 26.01.2026
Бифуркационные изменения массы гриба происходят тогда, когда мы уменьшаем массу компоста в 10 раз, а скорость прироста биомассы уменьшаем в три раза. Скорость прироста биомассы может уменьшаться за. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru