Вот случай: у меня есть 4 радиокнопки, которые не являются членами радиогруппы. Это потому, что RadioGroup по умолчанию размещает дочерние элементы в вертикальном порядке и не может размещать их относительно друг друга. Прямо сейчас я проверяю все радиокнопки. Чего я хочу добиться, так это контролировать их проверенное состояние, чтобы, когда одно проверено (true), другое проверенное состояние автоматически устанавливалось в false. Там виджеты являются независимыми элементами макета, поэтому я думаю, мне нужно найти способ сгруппировать их все вместе. Я попробовал это, закодировав 4 переменные RadioButton с помощью простой функции if..else if, используя встроенные методы isChecked и setChecked. Затем я попытался сгруппировать их в массив Radiobutton [] и зациклиться на array.length с помощью цикла переключения. Ничего не работает. Стек уже 2 дня. Любая помощь приветствуется.
Спасибо за ответ, поясню дальше. У меня есть 4 изображения и 4 радиокнопки точно под каждым из них в родительском элементе RelativeLayout, чтобы пользователь мог выбрать, какое изображение он предпочитает. ImageViews не расположены вертикально, как и radioButtons. Вот почему я не хочу использовать RadioGroup. Я мог бы использовать LinearLayout и размещать изображения в вертикальной ориентации, а рядом с ними располагать радиокнопки в группе. Каждое проверенное состояние RadioButton по умолчанию является ложным, и когда я его проверяю, оно становится истинным. Проблема в том, что я могу проверить все радиокнопки. Что я хочу, так это то, что когда я выбираю один RadioButton, другие автоматически снимаются, так что только один может быть проверен в любое время. Вот фрагмент:
private RadioButton rbtnWater;
private RadioButton rbtnRoad;
private RadioButton rbtnBoy;
private RadioButton rbtnLeft;
rbtnWater = (RadioButton) findViewById(R.id.rbtnWater);
rbtnRoad = (RadioButton) findViewById(R.id.rbtnRoad);
rbtnBoy = (RadioButton)findViewById(R.id.rbtnBoy);
rbtnLeft = (RadioButton) findViewById(R.id.rbtnLeft)
//method called at onClick attribute (XML)
public void checkState(View v) {
if (rbtnWater.isChecked()) {
rbtnLeft.setChecked(false);
rbtnBoy.setChecked(false);
rbtnRoad.setChecked(false);
}
else if (rbtnLeft.isChecked()) {
rbtnBoy.setChecked(false);
rbtnWater.setChecked(false);
rbtnRoad.setChecked(false);
}
else if (rbtnBoy.isChecked()) {
rbtnWater.setChecked(false);
rbtnRoad.setChecked(false);
rbtnLeft.setChecked(false);
}
else if (rbtnRoad.isChecked()) {
rbtnWater.setChecked(false);
rbtnBoy.setChecked(false);
rbtnLeft.setChecked(false);
}
}