【问题标题】:the specified child already has a parent指定的孩子已经有父母
【发布时间】:2023-03-16 16:43:01
【问题描述】:

我的代码在这里

if(c!=null) 
{           
    c.moveToFirst();
    String col = c.getString(2); //  
    check.setText(col);
    check.setVisibility(0);

    while(!c.isAfterLast()) 
    {
        String col1 = c.getString(1); 
        String col2 = c.getString(2);    
        String col3 = c.getString(3);

            while(!c.isAfterLast())
        {
            TextView que1 = new TextView(this);
            que1.setText(col1);
            lymn.addView(que1);

            if(col3.equals("Date"))
            {
                DatePicker dp = new DatePicker(this);
                lymn.addView(dp);
                break;
            }

            if(col3.equals("User Input"))
                    {
                EditText ed = new EditText(this);
                ed.setWidth(250);

                lymn.addView(ed);
                break;
            }

            if(col3.equals("YES/NO"))
            {
                yes1.setText("Yes");
                no1.setText("NO");

                rg1.addView(yes1);
                rg1.addView(no1); 
                lymn.addView(rg1);

                break;
            }

            if(col3.equals("High Average Low"))
            {
                High1.setText("High");
                Avg1.setText("Average");
                Low1.setText("Low"); 

                rg2.addView(High1);
                rg2.addView(Avg1);
                rg2.addView(Low1);

                lymn.addView(rg2);

                break;
            }

            if(col3.equals("Excellent Good Average Poor"))
            {
                exce1.setText("Excellent");
                good1.setText("Good");
                avg11.setText("Average"); 
                poor1.setText("Poor");

                rg3.addView(exce1);
                rg3.addView(good1);
                rg3.addView(avg11);
                rg3.addView(poor1);

                lymn.addView(rg3);

                break;
            }
            break;     
        }

        c.moveToNext(); 
    }
}

当我运行此代码时,出现这样的错误

09-06 11:34:37.777: WARN/Exception(27814): java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 
09-06 11:34:37.777: WARN/Exception(27814):     at android.view.ViewGroup.addViewInner(ViewGroup.java:1970) 
09-06 11:34:37.777: WARN/Exception(27814):     at android.view.ViewGroup.addView(ViewGroup.java:1865) 
09-06 11:34:37.777: WARN/Exception(27814):     at android.view.ViewGroup.addView(ViewGroup.java:1822) 
09-06 11:34:37.777: WARN/Exception(27814):     at android.view.ViewGroup.addView(ViewGroup.java:1802) 
09-06 11:34:37.777: WARN/Exception(27814):     at com.ezee.app.user1.LoadCheckIn(user1.java:256) 
09-06 11:34:37.777: WARN/Exception(27814):     at com.ezee.app.user1.onCreate(user1.java:61) 
09-06 11:34:37.777: WARN/Exception(27814):     at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047) 
09-06 11:34:37.777: WARN/Exception(27814):     at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2627) 
09-06 11:34:37.777: WARN/Exception(27814):     at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2679) 
09-06 11:34:37.777: WARN/Exception(27814):     at android.app.ActivityThread.access$2300(ActivityThread.java:125) 
09-06 11:34:37.777: WARN/Exception(27814):     at android.app.ActivityThread$H.handleMessage(ActivityThread.java:2033) 
09-06 11:34:37.777: WARN/Exception(27814):     at android.os.Handler.dispatchMessage(Handler.java:99) 
09-06 11:34:37.777: WARN/Exception(27814):     at android.os.Looper.loop(Looper.java:123) 
09-06 11:34:37.777: WARN/Exception(27814):     at android.app.ActivityThread.main(ActivityThread.java:4627) 
09-06 11:34:37.777: WARN/Exception(27814):     at java.lang.reflect.Method.invokeNative(Native Method) 
09-06 11:34:37.777: WARN/Exception(27814):     at java.lang.reflect.Method.invoke(Method.java:521) 
09-06 11:34:37.777: WARN/Exception(27814):     at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:868) 
09-06 11:34:37.777: WARN/Exception(27814):     at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:626) 
09-06 11:34:37.777: WARN/Exception(27814):     at dalvik.system.NativeStart.main(Native Method)

请帮我解决这个问题

【问题讨论】:

    标签: android view radio-button


    【解决方案1】:

    您遇到的错误很难找到,因为您的代码到处都是,但该错误意味着您正在添加一个已在屏幕上的View(子)(有父)。

    这可能在任何地方,用这篇文章很难说,但是例如:

    这个可能有效:

      EditText ed = new EditText(this);
      ed.setWidth(250);
      lymn.addView(ed);
    

    ed 是新的,所以没有父级。

    但我找不到yes1 的声明,所以这可能是罪魁祸首。或者no1

      yes1.setText("Yes");
      no1.setText("NO");
      rg1.addView(yes1);
      rg1.addView(no1); 
      lymn.addView(rg1);
    

    检查您的所有addView 电话。 (提示:某处的错误中有一个行号。使用它)

    要尝试在评论中回答您的问题,您必须遵守这些规则;

    • 添加任何视图不得超过一次。
    • 当视图已被使用时(例如,您使用 findViewById 获取它,请勿在其上使用 addView
    • 当您要添加视图时,请使用 addView 和新视图。
    • 您可以将其中几个新视图添加到一个视图中,但不能多次添加该视图。
    • 您不能简单地通过更改某些内容来重用视图。您可以重复使用一个变量,但如果您想使用addView 重新添加它,则需要创建一个新视图。

    而且,我不能再强调这一点:使用错误中的行号找出是哪一行产生了错误。查看您在此处添加的内容,并尝试通过上述帮助找出为什么这不起作用。

    【讨论】:

    • 但是你看到我的代码我有多个单选按钮。他们也知道我在做什么?
    • 我写 RadioGroup rg1 = new RadioGroup(this); RadioButton yes1 = new RadioButton(this); RadioButton no1 = new RadioButton(this);在上面的第一个 if 条件
    • 试着回答这个问题,但你的问题不是太清楚。不过,您应该能够通过有关帮助来解决这个问题。
    • 请注意:我只是以 yes/no 为例,它可能是您要添加的另一个视图 => 检查错误中的行号!
    • but the error means you are adding a View (child) that is allready on the screen (has a parent). 这就是重点。
    【解决方案2】:

    这意味着你正在添加一个没有它的父视图的视图

    A LinearLayout 包含两个按钮,如果您将这些按钮添加到某个视图,则会发生此异常,您必须添加 LinearLayout(root parent) 而不是 Sub Children

    【讨论】:

      猜你喜欢
      • 2012-02-19
      • 1970-01-01
      • 2017-05-21
      • 2021-06-04
      • 1970-01-01
      相关资源
      最近更新 更多