Android 重置收音机组内的单选按钮

Android 重置收音机组内的单选按钮,android,xamarin.android,radio-button,toggle,radio-group,Android,Xamarin.android,Radio Button,Toggle,Radio Group,如何在一个单选组中重置单选按钮,如下图所示 所有我的单选组及其单选按钮都是通过编程方式创建的 我试图设置OnClickListener以在更改之前获取单选按钮值,但没有帮助 编辑:我在下面发布了答案,请检查。您必须在检查另一个单选按钮时取消选中一个单选按钮 简单的方法 public void clearRadioChecked() { alt1.setChecked(false); blt2.setChecked(false); } 如果要选择alt1,请单击alt1,执行以下操作

如何在一个单选组中重置单选按钮,如下图所示

所有我的单选组及其单选按钮都是通过编程方式创建的

我试图设置OnClickListener以在更改之前获取单选按钮值,但没有帮助


编辑:我在下面发布了答案,请检查。

您必须在检查另一个单选按钮时取消选中一个单选按钮

简单的方法

public void clearRadioChecked() {
 alt1.setChecked(false);
 blt2.setChecked(false);

  }
如果要选择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很容易

我用tag来知道这个单选按钮之前是否检查过

False=>未选中该选项

True=>它已被选中

radiobutton.Tag=false

radiobutton.Click+=SingleChoiceQuestionAlternativeClick

然后:

private void SingleChoiceQuestionAlternativeClick(对象发送者,事件参数e)
{
RadioButton questionAlternative=发送者作为RadioButton;
if(questionAlternative!=null)
{
RadioGroup questionAlternatives=questionAlternative。父对象为RadioGroup;
if(questionAlternations!=null)
{
if(questionAlternative.Tag.Equals(false))
{
for(int i=0;i
我应该在代码中的何处调用clearRadioChecked()方法?在alt1I的onCheckChangedListener中,我试图设置OnCheckedChangeListener,但我总是得到Ischecked=true。我怎么知道这个单选按钮以前是否被检查过,这样我就可以清除它了?很高兴它起作用了。您也可以访问:了解更多关于SO的信息,并尽可能支持我。
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();
                }
            }
        }
    }