Android-ラジオボタン

android-radio-button.png
radio-button.jpg

XMLファイル

RadioGroup以下には、RadioButtonタグ以外の余計な要素は入れないほうがいい。
2つボタンがチェックされたりと、変な挙動になる。

    <RadioGroup
        android:id="@+id/radioGroup1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:orientation="horizontal" >
 
        <RadioButton
            android:id="@+id/radio_vol1"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:checked="true"
            android:text="VolumeData1" />
 
        <RadioButton
            android:id="@+id/radio_vol2"
            android:layout_width="wrap_content"
            android:layout_height="wrap_content"
            android:text="VolumeData2" />
    </RadioGroup>

javaのコード

こちらのコードは端末によって挙動が異なります。なので非推奨です
public class MenuDialog extends Dialog implements OnCheckedChangeListener {
private RadioGroup mRadioGroup;
    private RadioButton mRadioGenre;
    private RadioButton mRadioTitle;
public MenuDialog(Context context) {
        super(context);
        mActivity = (MainActivity) context;
        mRadioGroup = (RadioGroup) findViewById(R.id.radioGroupShow);
        mRadioGenre=(RadioButton)findViewById(R.id.radioButtonGenre);
        mRadioTitle=(RadioButton)findViewById(R.id.radioButtonTitle);
        mRadioGroup.setOnCheckedChangeListener(this);
        mRadioGenre.setChecked(true);
    }
    public void onCheckedChanged(RadioGroup group, int checkedId) {
          if(checkedId==R.id.radioButtonGenre){
              mResultDialog.mTitleMode=0;
         }else{
             mResultDialog.mTitleMode=1;}
  }

ラジオボタンが押された時の挙動の登録

public void onCheckedChanged(RadioGroup group, int checkedId) { は端末によってcheckedIdが変わるので要注意

要注意というか、使わないほうがよいと思います。
RadioGroupにリスナーつけるのではなく、代わりにRadioButtonの方1つ1つにリスナーつける形式の方が安全であります

public void onCheckedChanged(CompoundButton buttonView, boolean isChecked) {

+ デフォルトの選択値を変える方法

int IdOfYourButton= radioButton.getId();
radiogroup.check(IdOfYourButton);

あるいはもっとラクな方法は
((RadioButton)radioGroup.getChildAt(INDEX)).setChecked(true);

遭遇したエラー

RadioGroupが2つ以上あるとき、chckdIdが増える


radiobutton

サポートサイト Wikidot.com radiobutton