我正在尝试使用内部有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()
,假设单选按钮已经有值,但它只显示无意义的数字。
答案 0 :(得分:2)
您应该在代码中使用RadioGroup
和OnCheckedChangeListener
来检测何时选择了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;
}