1. ホーム

[解決済み】AndroidでRadioGroupのselected indexを取得する方法

2022-04-06 21:34:42

質問

AndroidでRadioGroupのselected indexを簡単に取得する方法はありますか?それともOnCheckedChangeListenerを使って変更をリッスンし、最後に選択されたインデックスを保持するものを用意しなければならないのでしょうか?

xmlの例です。

<RadioGroup android:id="@+id/group1" android:layout_width="fill_parent" android:layout_height="wrap_content" android:orientation="vertical">
    <RadioButton android:id="@+id/radio1" android:text="option 1" android:layout_width="wrap_content" android:layout_height="wrap_content" />
    <RadioButton android:id="@+id/radio2" android:text="option 2" android:layout_width="wrap_content" android:layout_height="wrap_content" />
    <RadioButton android:id="@+id/radio3" android:text="option 3" android:layout_width="wrap_content" android:layout_height="wrap_content" />
    <RadioButton android:id="@+id/radio4" android:text="option 4" android:layout_width="wrap_content" android:layout_height="wrap_content" />
    <RadioButton android:id="@+id/radio5" android:text="option 5" android:layout_width="wrap_content" android:layout_height="wrap_content" />
</RadioGroup>

を選択した場合 option 3 インデックスを取得したい、2.

どのように解決するのですか?

このようなことができるようになるはずです。

int radioButtonID = radioButtonGroup.getCheckedRadioButtonId();
View radioButton = radioButtonGroup.findViewById(radioButtonID);
int idx = radioButtonGroup.indexOfChild(radioButton);

もし RadioGroup は他のViewを含んでいる(例えば TextView を指定した場合 indexOfChild() メソッドは間違ったインデックスを返します。

選択された RadioButton テキストを RadioGroup :

 RadioButton r = (RadioButton) radioButtonGroup.getChildAt(idx);
 String selectedtext = r.getText().toString();