如何设置无线电组android内的单选按钮的值

时间:2015-07-21 13:57:29

标签: android radio-button radio-group

我正在尝试使用内部有2个单选按钮的无线电组。我想为每个单选按钮设置一个值,例如值为男性和女性。之后,当我点击我的单选按钮时,它将显示所选的值。你怎么能实现这个目标?感谢您的帮助。

我尝试过这样的事情只是为了测试我将如何设置一个值

public void onRadioButtonClicked(View radioButton) {
    int count = radioGroup.getChildCount();
    for (int i = 0; i < count; i++) {
        View o = radioGroup.getChildAt(i);
        if (o instanceof RadioButton) {

            RadioButton radioBtn =  (RadioButton)o;
            // get the state
            boolean isChecked = radioBtn.isChecked();
            // to set the check
            radioBtn.setChecked(true);

        }
    }
}

但我认为这不是我想要的。

我已经尝试radioGroup.setId(),假设单选按钮已经有值,但它只显示无意义的数字。

2 个答案:

答案 0 :(得分:2)

您应该在代码中使用RadioGroupOnCheckedChangeListener来检测何时选择了RadioButton。在您的布局XML中:

<RadioGroup
    android:id="@+id/radioGroup"
    ... >

    <RadioButton
        android:id="@+id/radioButton1"
        ... />

    <RadioButton
        android:id="@+id/radioButton2"
        ... />
</RadioGroup>

在你的活动/片段中,设置如下:

RadioGroup radioGroup = (RadioGroup) findViewById(R.id.radioGroup);
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangedListener() {

    @Override
    public void onCheckedChanged(RadioGroup group, int checkedId) {
        <type> value = <default value>;
        switch (checkedId) {
        case R.id.radioButton1:
            value = ...;
            break;
        case R.id.radioButton2:
            value = ...;
            break;
        }
        // do something with value
    }
});

答案 1 :(得分:0)

确保您的单选按钮包含在如下所示的广播组中:

        <RadioGroup
            android:id="@+id/myRadioGroup"
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:orientation="horizontal">

            <RadioButton
                android:id="@+id/radioGroupButtonMale"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content" />

            <RadioButton
                android:id="@+id/radioGroupButtonFemale"
                android:layout_width="0dp"
                android:layout_weight="1"
                android:layout_height="wrap_content"/>
        </RadioGroup>

在代码中,设置值

RadioGroup mySelection = (RadioGroup)findViewById(R.id.myRadioGroup);
int radioButtonId = mySelection.getCheckedRadioButtonId();
String selectedValue;
    switch (radioButtonId)
    {
        case R.id.radioGroupButtonMale:
            selectedValue = "Value for Male";
            break;
        case R.id.radioGroupButtonFemale:
            selectedValue = "Value for Female";
            break;
    }