Я надеюсь, что кто-то поможет мне понять, что происходит с радиогруппой Android и обратными вызовами onCheckedChanged при изменении ориентации.
У меня есть радиогруппа с тремя переключателями. Вторая кнопка определяется как кнопка по умолчанию, устанавливая для атрибута checked значение true. Мой xml для радиогруппы выглядит следующим образом:
<RadioGroup
android:id="@+id/rgReportRange"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_weight="1"
android:orientation="horizontal" >
<RadioButton
android:id="@+id/button1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/One" />
<RadioButton
android:id="@+id/button2"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:checked="true"
android:text="@string/Two" />
<RadioButton
android:id="@+id/button3"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="@string/Three" />
</RadioGroup>
RadioGroup имеет onCheckedChangedListener. Когда ориентация изменяется, onCheckedChangedListener вызывается по-разному в зависимости от того, какая кнопка была выбрана до изменения ориентации.
Если выбран button1, я вижу один обратный вызов метода onCheckedChanged с checkedID, равным button1.
Если выбран button2, я не вижу обратного вызова для метода onCheckedChanged.
Если выбран button3, я вижу два обратных вызова для метода onCheckedChanged. Первый обратный вызов имеет checkID, равный button2. Второй обратный вызов имеет checkID, равный button3.
Я не понимаю разницы в поведении между первым и третьим случаями. В обоих есть переключатель, отличный от выбранного по умолчанию.