当我切换活动时,RadioGroup成员按钮会不断更改ID

时间:2018-04-16 16:42:25

标签: android view widget radio-group

我有2个活动可以前后互相导航。两者都有一个RadioGroup。问题是第一个活动有RadioGroup id为:1,2,3,4和第二个活动有id为:5,6,7,8。但是当我再次切换回第一个活动时,id变为:9 ,10,11,12。有解决方案吗?

以下是我如何定义我的群体:

<RadioGroup
    android:id="@+id/leftRadioGroup"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content"
    android:orientation="horizontal"
    android:padding="10dp"
    android:layout_alignParentBottom="true"
    android:layout_marginLeft="150dp"
    android:layout_marginBottom="10dp">

    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="LED OFF"
        android:layout_margin="7dp"
        android:textSize="10sp"
        android:fontFamily="serif"
        />
    <RadioButton
        android:layout_width="wrap_content"
        android:layout_height="wrap_content"
        android:text="Position LED"
        android:layout_margin="7dp"
        android:textSize="10sp"
        android:fontFamily="serif"
        />
   <RadioButton
       android:layout_width="wrap_content"
       android:layout_height="wrap_content"
       android:text="Force LED"
       android:layout_margin="7dp"
       android:textSize="10sp"
       android:fontFamily="serif"
       />
</RadioGroup>

以下是我在其上设置点击监听器的方法:

  leftRadio = (RadioGroup)findViewById(R.id.leftRadioGroup);
    leftRadio.setOnCheckedChangeListener(new RadioGroup.OnCheckedChangeListener() {
        @Override
        public void onCheckedChanged(RadioGroup radioGroup, int i) {
            Toast.makeText(getApplicationContext(),""+i,Toast.LENGTH_SHORT).show();
            if(i==1) {
                leftLed = 0;

            }
            else if(i==2) {
                leftLed = 1;

            }
            else {
                leftLed=3;

            }
        }
    });

1 个答案:

答案 0 :(得分:0)

您应在android:id中添加RadioButton属性,并在id方法中检查onCheckedChanged()

示例:

<RadioButton
    android:id="@+id/radioButton1"
    android:layout_width="wrap_content"
    android:layout_height="wrap_content" />

RadioGroup.setOncheckedChangedListener

    @Override
    public void onCheckedChanged(RadioGroup radioGroup, int i) {
        Toast.makeText(getApplicationContext(),""+i,Toast.LENGTH_SHORT).show();

        if(i==R.id.radioButton1) {
            leftLed = 0;
        }
        else if(i==R.id.radioButton2) {
            leftLed = 1;
        }
        else {
            leftLed=3;
        }
    }

您可能希望查看Android RadioGroup Example