重置单选组内的单选按钮
Reset a Radio button inside a Radio group
我如何重置单选按钮组内的单选按钮,如下图示例
我所有的单选组及其单选按钮都是以编程方式创建的。
我尝试设置 OnClickListener 以在更改之前获取单选按钮值,但没有帮助。
编辑:我把答案贴在下面,请查收。
您必须取消选中一个单选按钮,同时选中另一个。
简单的方法。
public void clearRadioChecked() {
alt1.setChecked(false);
blt2.setChecked(false);
}
如果您想 select alt1 然后点击 alt1 执行以下操作。
clearRadioChecked()
alt1.setChecked(true);
试试这个:
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
if (checkedId == R.id.radioButton){
//do something
}
else if(checkedId == R.id.radioButton2){
}
else{
}
});
xml布局
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="90dp"
android:layout_below="@+id/imageView"
android:layout_marginTop="58dp"
android:weightSum="1"
android:id="@+id/radioGroup"
android:layout_alignLeft="@+id/textView2"
android:layout_alignStart="@+id/textView2"
android:layout_alignRight="@+id/textView3"
android:layout_alignEnd="@+id/textView3">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="55dp"
android:text="Male"
android:id="@+id/radioButton"
android:layout_gravity="center_horizontal"
android:checked="false"
android:textSize="25dp" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Female"
android:id="@+id/radioButton2"
android:layout_gravity="center_horizontal"
android:checked="false"
android:textSize="25dp"
android:layout_weight="0.13" />
</RadioGroup>
我是这样做的:
它在 C# 中,但我认为将其转换为 Java 很容易。
我用标签知道这个单选按钮之前是否选中。
False => 未勾选
True => 选中
radiobutton.Tag = false;
radiobutton.Click += SingleChoiceQuestionAlternativeClick;
然后:
private void SingleChoiceQuestionAlternativeClick(object sender, EventArgs e)
{
RadioButton questionAlternative = sender as RadioButton;
if (questionAlternative != null)
{
RadioGroup questionAlternatives = questionAlternative.Parent as RadioGroup;
if (questionAlternatives != null)
{
if (questionAlternative.Tag.Equals(false))
{
for (int i = 0; i < questionAlternatives.ChildCount; i++)
{
RadioButton childRadioButton = questionAlternatives.GetChildAt(i) as RadioButton;
if (childRadioButton != null)
{
childRadioButton.Tag = false;
}
}
questionAlternative.Tag = true;
}
else
{
questionAlternative.Tag = false;
questionAlternatives.ClearCheck();
}
}
}
}
我如何重置单选按钮组内的单选按钮,如下图示例
我所有的单选组及其单选按钮都是以编程方式创建的。
我尝试设置 OnClickListener 以在更改之前获取单选按钮值,但没有帮助。
编辑:我把答案贴在下面,请查收。
您必须取消选中一个单选按钮,同时选中另一个。
简单的方法。
public void clearRadioChecked() {
alt1.setChecked(false);
blt2.setChecked(false);
}
如果您想 select alt1 然后点击 alt1 执行以下操作。
clearRadioChecked()
alt1.setChecked(true);
试试这个:
radioGroup.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
@Override
public void onCheckedChanged(RadioGroup group, @IdRes int checkedId) {
if (checkedId == R.id.radioButton){
//do something
}
else if(checkedId == R.id.radioButton2){
}
else{
}
});
xml布局
<RadioGroup
android:layout_width="fill_parent"
android:layout_height="90dp"
android:layout_below="@+id/imageView"
android:layout_marginTop="58dp"
android:weightSum="1"
android:id="@+id/radioGroup"
android:layout_alignLeft="@+id/textView2"
android:layout_alignStart="@+id/textView2"
android:layout_alignRight="@+id/textView3"
android:layout_alignEnd="@+id/textView3">
<RadioButton
android:layout_width="wrap_content"
android:layout_height="55dp"
android:text="Male"
android:id="@+id/radioButton"
android:layout_gravity="center_horizontal"
android:checked="false"
android:textSize="25dp" />
<RadioButton
android:layout_width="wrap_content"
android:layout_height="wrap_content"
android:text="Female"
android:id="@+id/radioButton2"
android:layout_gravity="center_horizontal"
android:checked="false"
android:textSize="25dp"
android:layout_weight="0.13" />
</RadioGroup>
我是这样做的:
它在 C# 中,但我认为将其转换为 Java 很容易。
我用标签知道这个单选按钮之前是否选中。
False => 未勾选
True => 选中
radiobutton.Tag = false;
radiobutton.Click += SingleChoiceQuestionAlternativeClick;
然后:
private void SingleChoiceQuestionAlternativeClick(object sender, EventArgs e)
{
RadioButton questionAlternative = sender as RadioButton;
if (questionAlternative != null)
{
RadioGroup questionAlternatives = questionAlternative.Parent as RadioGroup;
if (questionAlternatives != null)
{
if (questionAlternative.Tag.Equals(false))
{
for (int i = 0; i < questionAlternatives.ChildCount; i++)
{
RadioButton childRadioButton = questionAlternatives.GetChildAt(i) as RadioButton;
if (childRadioButton != null)
{
childRadioButton.Tag = false;
}
}
questionAlternative.Tag = true;
}
else
{
questionAlternative.Tag = false;
questionAlternatives.ClearCheck();
}
}
}
}