2

这是我的代码

final RadioGroup rg1 = (RadioGroup) findViewById(R.id.radioGroup1);
RadioButton rb1 = (RadioButton) findViewById(R.id.radio0);
RadioButton rb2 = (RadioButton) findViewById(R.id.radio1);  
RadioButton rb3 = (RadioButton) findViewById(R.id.radio2);
final CheckBox cb1 = (CheckBox) findViewById(R.id.chkbox1);
int id = rg1.getCheckedRadioButtonId();
System.out.println("------------------------|"+id);
switch (id) {
    case R.id.radio0:
        cb1.setEnabled(true);
        break;

    case R.id.radio1:
        cb1.setEnabled(true);
        break;

    case R.id.radio2:
        cb1.setEnabled(true);
        break;

    default:
        cb1.setEnabled(false);
        break;
    }

这总是返回 -1(chkbox 总是禁用),我似乎无法让它工作。另外,我还尝试通过 setId 将单个值分配给单选按钮,但它也不起作用。

这是我的 XML

<RadioGroup
    android:id="@+id/radioGroup1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:layout_alignParentTop="true"
    android:layout_centerHorizontal="true"
    android:layout_marginTop="46dp" >

    <RadioButton
        android:id="@+id/radio0"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="RadioButton1" 
        android:checkedButton ="1"        
        />

    <RadioButton
        android:id="@+id/radio1"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="RadioButton2"
        android:checkedButton="2"              
        />

    <RadioButton
        android:id="@+id/radio2"
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="RadioButton3" 
        android:checkedButton="3"             
        />
</RadioGroup>
4

2 回答 2

1

您在错误的视图上使用了“android:checkedButton”属性。当您将此属性添加到每个单选按钮时,此属性标识哪个单选按钮是一个组被选中。尝试将其更改为以下

<RadioGroup
android:id="@+id/radioGroup1"
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:layout_alignParentTop="true"
android:layout_centerHorizontal="true"
android:layout_marginTop="46dp" 
android:checkedButton="2"              
>

<RadioButton
    android:id="@+id/radio0"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="RadioButton1" 
    />

<RadioButton
    android:id="@+id/radio1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="RadioButton2"
    />

<RadioButton
    android:id="@+id/radio2"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:text="RadioButton3" 
    />

于 2013-05-13T05:52:12.283 回答
0

当然是行不通的。您应该使用侦听器来检测选中了哪个单选按钮,如下所示

rg1.setOnCheckedChangeListener(new OnCheckedChangeListener() {

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {

        System.out.println("------------------------|"+checkedId);
        switch (checkedId) {
            ... 
        }
    }
});
于 2013-05-13T05:51:20.467 回答