指定的子项已有父项。单选按钮

时间:2016-04-07 20:05:27

标签: android radio-button illegalstateexception radio-group

我正在尝试从列表对象中执行一个RadioGroup动态,我读了很多关于我的错误,但解决方案对我没有帮助,我希望你可以。

我的结构.xml

<android.support.v4.widget.DrawerLayout
    xmlns:android="http://schemas.android.com/apk/res/android"
    android:id="@+id/drawer_layout"
    android:layout_width="match_parent"
    android:layout_height="match_parent">
    <RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android"
        xmlns:app="http://schemas.android.com/apk/res-auto"
        xmlns:tools="http://schemas.android.com/tools"
        android:layout_width="match_parent"
        android:layout_height="match_parent"
        android:orientation="vertical"
        android:fitsSystemWindows="true">
        <android.support.design.widget.AppBarLayout
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:id="@+id/app_bar"
            android:theme="@style/AppTheme.AppBarOverlay">

            <android.support.v7.widget.Toolbar
                android:id="@+id/toolbar"
                android:layout_width="match_parent"
                android:layout_height="50dp"
                android:background="@color/green_tataki"
                android:padding="5dp"
                app:popupTheme="@style/AppTheme.PopupOverlay">
            </android.support.v7.widget.Toolbar>

        </android.support.design.widget.AppBarLayout>
        <ScrollView
            android:layout_width="match_parent"
            android:layout_height="wrap_content"
            android:layout_below="@+id/big_box_user"
            android:layout_above="@+id/buttons"
            android:layout_marginLeft="10dp"
            android:layout_marginRight="10dp"
            android:background="@color/white">

            <RelativeLayout
                android:layout_width="wrap_content"
                android:layout_height="wrap_content">
                <!--SOMETHING-->
                <LinearLayout
                    android:layout_width="wrap_content"
                    android:layout_height="wrap_content"
                    android:layout_below="@+id/identity"
                    android:orientation="horizontal"
                    android:layout_marginLeft="5dp"
                    android:layout_marginRight="10dp"
                    android:id="@+id/gentle_view">
                         <!--HERE GOES THE RADIO BUTTON-->
                </LinearLayout>
                <!--SOMETHING-->
            </RelativeLayout>
        </ScrollView>
    </RelativeLayout>
</android.support.v4.widget.DrawerLayout>

我的活动,填写广播组:

 LinearLayout gentleView = (LinearLayout) findViewById(R.id.gentle_view);
 final RadioGroup rg = new RadioGroup(this);
 RadioButton rb = new RadioButton[userInfo.getUserSex().size()];
 rg.setOrientation(RadioGroup.HORIZONTAL);
    for(int i=0; i<userInfo.getUserSex().size()-1; i++)
    {
        rb[i] = new RadioButton(this);
        rb[i].setText(userInfo.getUserSex().get(i).getName());
        rb[i].setId(userInfo.getUserSex().get(i).getId());
        ((ViewGroup) gentleView.getParent()).removeView(gentleView);
        rg.addView(rb[i]);
    }
    gentleView.addView(rg);

如您所见,我将removeView放入for循环中。我尝试将无线电组创建到xml中,错误是一样的:

 java.lang.IllegalStateException: The specified child already has a parent.
 You must call removeView() on the child's parent first.

真的,我不太了解错误,我试着用其他答案解决,但它对我不起作用。

======================================== EDIT ====== =============================== 我的错误是我正在处理RadioButton就像一个数组。所以,错误消失了,但现在,RadioGroup只显示第一个项目。

这是代码

    for(int i=0; i<userInfo.getUserSex().size()-1; i++)
    {
        rb = new RadioButton(this);
        rb.setText(userInfo.getUserSex().get(i).getName());
        rb.setId(userInfo.getUserSex().get(i).getId());
        rg.addView(rb);
        gentleView.addView(rg);
    }

0 个答案:

没有答案