Радио кнопки (RadioButton) позволяют пользователю выбрать из списка один пункт. Используйте радио кнопки, для наборов, в которых пункты являются взаимоисключающими, если считаете, что пользователь должен видеть все возможные варианты “бок-о-бок”. Если не нужно показывать все варианты рядом, используйте Выпадающий список.
Для создания радио кнопки, используйте компонент типа RadioButton. Однако, поскольку радио кнопки являются взаимоисключающими, необходимо поместить их внутрь группы – компонента типа RadioGroup. При группировании элементов, система сама позаботится о том, чтобы мог быть выбран только один элемент группы за раз.
Обработка нажатия
При нажатии на радио кнопку, соответствующий объект типа RadioButton получает событие on-click.
Для обработки нажатия на радио кнопку, необходимо добавить для элемента <RadioButton>
атрибут android:onClick. В качестве значения атрибута необходимо указать имя метода, который должен вызываться при нажатии. Класс явления, содержащий разметку с радио кнопкой должен реализовывать соответствующий метод.
Например:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
<?xml version="1.0" encoding="utf-8"?> <RadioGroup xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical"> <RadioButton android:id="@+id/radio_pirates" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/pirates" android:onClick="onRadioButtonClicked"/> <RadioButton android:id="@+id/radio_ninjas" android:layout_width="wrap_content" android:layout_height="wrap_content" android:text="@string/ninjas" android:onClick="onRadioButtonClicked"/> </RadioGroup> |
Примечание: RadioGroup это подкласс базового класса LinearLayout с вертикальной ориентацией по умолчанию.
В код явления добавим следующий метод, который обрабатывает событие нажатия сразу для обоих радио кнопок:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
public void onRadioButtonClicked(View view) { // Кнопка установлена? boolean checked = ((RadioButton) view).isChecked(); // Узнаем какая кнопка нажата switch(view.getId()) { case R.id.radio_pirates: if (checked) // Пираты лучшие break; case R.id.radio_ninjas: if (checked) // Ниндзя рулят! break; } } |
Метод, указанный в атрибуте android:onClick должен иметь в точности такую же сигнатуру, как в выше приведенном примере. То есть он должен:
- Быть публичным (public).
- Возвращать тип void.
- Принимать в качестве единственного аргумента объект типа View (это будет радио кнопка, по которой кликнули).
Примечание: если нужно изменить состояние радио кнопки (например при загрузке сохраненных параметров типа CheckBoxPreference), используйте метод setChecked(boolean) или toggle().