向きが変わったときに Android ラジオグループと onCheckedChanged コールバックに関して何が起こっているのかを誰かが理解してくれることを願っています。
3 つのラジオ ボタンを持つラジオ グループがあります。2 番目のボタンは、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 が選択されている場合、checkedID が button1 に等しい onCheckedChanged メソッドへの 1 つのコールバックが表示されます。
button2 が選択されている場合、onCheckedChanged メソッドへのコールバックが表示されません。
button3 が選択されている場合、onCheckedChanged メソッドへの 2 つのコールバックが表示されます。最初のコールバックのcheckedIDはbutton2と同じです。2 番目のコールバックには、button3 に等しい checkedID があります。
1 番目と 3 番目のケースの動作の違いがわかりません。どちらにも、デフォルトで選択されている以外のラジオ ボタンがあります。