Question: spécifié enfant a déjà une mère. Vous devez appeler removeView() sur le parent de l'enfant d'abord
J'ai eu une erreur de specified child already has a parent. You must call removeView() on the child's parent first
pour le cas ci-dessous, voyez si vous pouvez lui offrir toute aide! Merci!
Il y a un ScrollView
de 4 TableLayout
, par exemple ex_1_list, ex_2_list et ainsi de suite.
Il y a 4 sortes de groupes et je voudrais montrer les différentes catégories de données dans la base de données à l' TableLayout
, mais si la base de données est vide, alors il pourrait gonfler dans chacun des 4 Tablelayouts une vue montrant il n'y a pas de données dans chaque catégorie.
Premier à obtenir la taille de base de données, si la taille=0, signifie pas de données dans les exercices de base de données, il permettra d'atteindre l'autre boucle, comme suit:
Classe MainActivity
int i = exercises.size();
for (int j = 0; j < i; j++)
{
Inflate_All_Ex_Data(j);
}
if (i==0)
{
Inflate_All_Ex_Data (0);
}
private void Inflate_All_Ex_Data (int index)
{
...
else
{
LayoutInflater inflater = (LayoutInflater) getSystemService(Context.LAYOUT_INFLATER_SERVICE);
View newTagView = inflater.inflate(R.layout.exercises_info, null);
Button exercise_id = (Button) newTagView.findViewById(R.id.exercise_id);
Button exercise_group = (Button) newTagView.findViewById(R.id.exercise_group);
Button exercise_name = (Button) newTagView.findViewById(R.id.exercise_name);
Button exercise_count = (Button) newTagView.findViewById(R.id.exercise_count);
exercise_group.setText("");
exercise_id.setText("");
exercise_name.setText("No data!");
exercise_calory.setText("");
table_list.removeAllViews();
ex_1_List.addView(newTagView, index);
ex_2_List.addView(newTagView, index); //Line224
ex_3_List.addView(newTagView, index);
ex_4_List.addView(newTagView, index);
}
fichier xml:
<ScrollView
android:id="@+id/ScrollView01"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_above="@+id/Table2"
android:layout_below="@+id/view1" >
<LinearLayout
android:id="@+id/table_list"
android:layout_width="match_parent"
android:layout_height="match_parent"
android:layout_alignParentBottom="true"
android:layout_alignParentLeft="true"
android:layout_below="@+id/add"
android:layout_margin="2dp"
android:orientation="vertical" >
<TableLayout
android:id="@+id/ex_1_List"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/blue_btn" />
<TableLayout
android:id="@+id/ex_2s_List"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/green_btn" />
<TableLayout
android:id="@+id/ex_3_List"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/yellow_btn" />
<TableLayout
android:id="@+id/ex_4_List"
android:layout_width="match_parent"
android:layout_height="wrap_content"
android:layout_marginBottom="5dp"
android:layout_marginLeft="5dp"
android:layout_marginRight="5dp"
android:background="@drawable/pink_btn" />
</LinearLayout>
</ScrollView>
Logcat:
07-16 01:48:44.503: E/AndroidRuntime(13094): FATAL EXCEPTION: main
07-16 01:48:44.503: E/AndroidRuntime(13094): java.lang.RuntimeException: Unable to start activity ComponentInfo{com.examples.abc/com.example.abc.Exercises_MainActivity}: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2110)
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2135)
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.app.ActivityThread.access$700(ActivityThread.java:140)
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1237)
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.os.Handler.dispatchMessage(Handler.java:99)
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.os.Looper.loop(Looper.java:137)
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.app.ActivityThread.main(ActivityThread.java:4921)
07-16 01:48:44.503: E/AndroidRuntime(13094): at java.lang.reflect.Method.invokeNative(Native Method)
07-16 01:48:44.503: E/AndroidRuntime(13094): at java.lang.reflect.Method.invoke(Method.java:511)
07-16 01:48:44.503: E/AndroidRuntime(13094): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1027)
07-16 01:48:44.503: E/AndroidRuntime(13094): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:794)
07-16 01:48:44.503: E/AndroidRuntime(13094): at dalvik.system.NativeStart.main(Native Method)
07-16 01:48:44.503: E/AndroidRuntime(13094): Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.view.ViewGroup.addViewInner(ViewGroup.java:3620)
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.view.ViewGroup.addView(ViewGroup.java:3491)
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.widget.TableLayout.addView(TableLayout.java:425)
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.view.ViewGroup.addView(ViewGroup.java:3436)
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.widget.TableLayout.addView(TableLayout.java:407)
07-16 01:48:44.503: E/AndroidRuntime(13094): at com.examples.abc.Exercises_MainActivity.Inflate_All_Ex_Data(Exercises_MainActivity.java:224)
07-16 01:48:44.503: E/AndroidRuntime(13094): at com. examples.abc.Exercises_MainActivity.onCreate(Exercises_MainActivity.java:144)
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.app.Activity.performCreate(Activity.java:5206)
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1094)
07-16 01:48:44.503: E/AndroidRuntime(13094): at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2074)
07-16 01:48:44.503: E/AndroidRuntime(13094): ... 11 more
Question:
Comment cela pourrait-il specified child already has a parent. You must call removeView() on the child's parent first
être résolu?
Merci!
OriginalL'auteur pearmak | 2013-07-15
Vous devez vous connecter pour publier un commentaire.
Vous voulez ajouter, même à la vue des parents différents. Vous devez gonfler le même point de vue à chaque fois que vous souhaitez l'ajouter à un autre parent.
Je peux vous suggérer de faire une boucle for avec quatre comme limite(vous savez, vous avez seulement quatre tableLayouts), gonfler le même point de vue à chaque fois et à la fin, ajouter ce point de vue au TableLayout.
OriginalL'auteur Julio_oa