2011-09-06 8 views
11

mojego kodu jest tutajokreślony dziecko ma już rodzica

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

gdy uruchamiam ten błąd kod igot jak ten

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 mi pomóc w tym

Odpowiedz

38

błędu dostaniesz jest trudne do znalezienia, ponieważ twój kod jest wszędzie, ale błąd oznacza, że ​​dodajesz View (dziecko), które jest już na ekranie (h jako rodzic).

To może być wszędzie, trudno powiedzieć z tego postu, ale na przykład:

Ten prawdopodobnie działa:

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

ed jest nowy, więc nie posiada rodzica.

Ale nie mogę znaleźć deklaracji yes1, więc ta jedna MOŻE być odciskiem. A może no1.

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

Sprawdź wszystkie swoje połączenia addView. (wskazówka: gdzieś tam jest numer linii, użyj go)

Aby spróbować odpowiedzieć na twoje pytanie w komentarzu, musisz przestrzegać tych zasad;

  • Nigdy nie dodawaj widoku więcej niż raz.
  • Gdy View allready używany (np masz go z findViewById, nie używaj addView na nim.
  • Gdy chcesz dodać widok, użyj addView z nowym widoku.
  • Można dodać kilka z tych nowych widoków do jednego widoku, ale nie można dodawać tego widoku wiele razy.
  • Nie można ponownie użyć widoku po prostu zmieniając niektóre rzeczy.Możesz ponownie użyć zmiennej, ale musisz zrobić nowy widok, jeśli chcesz go ponownie dodać, używając addView.

I, nie mogę więcej: dowiedz się, używając numeru linii w błędzie, która linia generuje błąd. Sprawdź, co tam dodajesz, i spróbuj dowiedzieć się z powyższą pomocą, dlaczego to nie działa.

+1

ale widzisz mój kod i mam wiele przycisków radiowych. Czy mają również widok na to, co robię? – Piyush

+1

pisz RadioGroup rg1 = new RadioGroup (this); \t \t \t RadioButton yes1 = new RadioButton (this); \t \t \t RadioButton no1 = new RadioButton (this); na powyższym pierwszym, jeśli stanie – Piyush

+1

Spróbuj odpowiedzieć na to pytanie, ale twoje pytanie nie jest zbyt jasne. Powinieneś być w stanie to rozgryźć z pomocą. – Nanne

3

Oznacza to dodajesz widok bez to rodzic jak

LinearLayout zawiera dwa przyciski, jeśli dodać te przycisk do pewnego widzenia to wyjątek występuje trzeba dodać LinearLayout (root rodzica) zamiast To jest Sub Dzieci