Вот так: у меня есть 4 radioButtons, которые не являются членами радиогруппы. Это потому, что RadioGroup по умолчанию помещает детей в вертикальном порядке и не может поместить их относительно друг друга. Теперь я проверю все радиобаты. То, что я хочу достичь, - это контролировать их проверенное состояние, так что когда один проверяется (true), остальные проверенные состояния автоматически устанавливаются на false. Виджеты - это независимые элементы макета, поэтому я думаю, мне нужно найти способ объединить их все вместе. Я попробовал это, закодировав 4 переменные RadioButton с простой if..else if функцией, используя isChecked и setChecked встроенные методы. Затем я попытался группировать их в массив Radiobutton [] и зациклил на array.length с помощью петли switch-case. Ничего не работает. Стек на 2 дня. Любая помощь оценивается.RadioButton isChecked состояние управления андроид
Спасибо за ответ, я объясню далее. У меня есть 4 imageViews и 4 radioButtons точно под каждым, в родительском RelativeLayout, так что пользователь может сделать выбор, какой образ он предпочитает. ImageViews не размещены вертикально, так же как и RadioButtons. Вот почему я не хочу использовать radioGroup. Я мог бы использовать LinearLayout и размещать imageViews в вертикальной ориентации и иметь radioButtons в группе, просто в стороне от них. Каждое проверенное состояние radioButton ложно по умолчанию, и когда я его проверю, становится истинным. Проблема в том, что я могу проверить все radioButtons. То, что я хочу, - это когда я выбираю один 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);
}
}
Но с тем, что не сработало, возникла проблема с ручным массивом и didn Не помещайте фрагмент кода, так что это сложно. –
ok добавлено snipper –
В этом случае «onClick» просто неверно, вам нужно вызвать setOnCheckedChangeListener(), щелчок перед изменением статуса проверки. Также: Никогда не используйте слушателей в атрибутах xml. Это проблематично. –