указанный ребенок уже имеет родителя - PullRequest
13 голосов
/ 06 сентября 2011

мой код здесь

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(); 
    }
}

, когда я запускаю этот код igot error вот так

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)

PLZ, помогите мне в этом

Ответы [ 2 ]

41 голосов
/ 06 сентября 2011

Ошибка, которую вы получаете, трудно найти, потому что ваш код повсюду, но ошибка означает, что вы добавляете 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.

ИЯ не могу не подчеркнуть это больше: выясните, используя номер строки в ошибке, какая строка приводит к ошибке. Посмотрите, что вы там добавляете, и попытайтесь выяснить с помощью приведенной выше справки, почему это не работает.

3 голосов
/ 11 сентября 2016

Это означает, что вы добавляете представление без его родителя, как

A LinearLayout содержит две кнопки, если вы добавляете эти кнопки в какое-либо представление, возникает это исключение, вам нужно добавить LinearLayout (корневой родитель) вместо его Sub Children

...