Android linearlayout以编程方式导致错误“;指定的子级已具有父级。必须对子对象&x27;调用removeView();“父母优先”;

Android linearlayout以编程方式导致错误“;指定的子级已具有父级。必须对子对象&x27;调用removeView();“父母优先”;,android,dynamic,textview,Android,Dynamic,Textview,我有一个xml格式的现有片段,如下所示 <LinearLayout android:id="@+id/phoneLinearLyout" android:layout_width="match_parent" android:layout_height="wrap_content" android:paddingLeft="10dp

我有一个xml格式的现有片段,如下所示

<LinearLayout
                    android:id="@+id/phoneLinearLyout"
                    android:layout_width="match_parent"
                    android:layout_height="wrap_content"
                    android:paddingLeft="10dp"
                    android:paddingBottom="@dimen/title_mar_gap"
                    android:paddingRight="10dp"
                    android:paddingTop="@dimen/title_mar_gap"
                    android:orientation="vertical">


                    <TextView
                        android:id="@+id/CL"
                        android:layout_width="wrap_content"
                        android:layout_height="match_parent"
                        android:gravity="center_vertical|left|center_horizontal"
                        android:text="Contact No"
                        android:textSize="@dimen/text_small" />


                    <TextView
                        android:id="@+id/CNV"
                        android:layout_width="match_parent"
                        android:layout_height="wrap_content"
                        android:gravity="center_vertical|left"
                        android:paddingBottom="5dp"
                        android:textColor="@color/black"
                        android:text=""
                        android:textSize="@dimen/text_medium" />


                    <Button
                        android:id="@+id/callButton"
                        android:textSize="15sp"
                        android:layout_width="wrap_content"
                        android:layout_height="wrap_content"
                        android:layout_marginLeft="20dp"
                        android:textColor="@color/white"
                        android:background="@color/Blue"
                        android:text="Call" />

                </LinearLayout>
我正试图用下面的代码动态地在linearlayout Fragment_fragmentView(如第一篇发布的XML中所述)上面的linearlayout Fragment_中创建文本视图

for (int i=0;i<2(variable here);i++)
    {


        contactDisplay = (TextView) rootView.findViewById(R.id.contanctNumberValue);
        contactDisplay.setTypeface(typeface);


        contactDisplay.setText(dataModel.getTelNo());
        //contactDisplay.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));
          llayout.addView(contactDisplay);
        //phoneLinearLyout.updateViewLayout(contactDisplay,);
    }

for(int i=0;i在将视图添加到布局之前,您只需删除所有视图即可:

llayout.removeAllViews(); //add this

for (int i=0;i<2(variable here);i++)
    {


        contactDisplay = (TextView) rootView.findViewById(R.id.contanctNumberValue);
        contactDisplay.setTypeface(typeface);


        contactDisplay.setText(dataModel.getTelNo());
        //contactDisplay.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));
          llayout.addView(contactDisplay);
        //phoneLinearLyout.updateViewLayout(contactDisplay,);

    }
llayout.removeallview();//添加此

对于(int i=0;i对于(int i=0;i您应该创建一个新的
TextView
并添加到llayout中


用于(int i=0;i每次都创建文本视图,而不是指向已使用的同一个文本视图。

contactDisplay
已添加到
LinearLayout
中。为什么要再次尝试添加它?实际上,我需要有多个文本视图才能添加到现有的LinearLayout中,我可以使用文本视图数组,但即使添加一次contactDisplay也不起作用(对于i=0;i“但即使添加一次contactDisplay也不起作用”-是的,因为它已经添加。这就是为什么您可以使用
findViewById()找到它的原因
。找到一个
视图并尝试再次添加它,不会使它成为一个新的、不同的
视图。你必须创建新的视图,或者直接实例化,或者使用其中定义的
视图膨胀布局。已经尝试过,但应用程序崩溃,现在在你指出的位置再次尝试,但应用程序崩溃d在日志中没有具体错误。谢谢,我是Android的初学者。我知道一旦使用了一个id,我们就不能在布局中使用相同的id。
llayout.removeAllViews(); //add this

for (int i=0;i<2(variable here);i++)
    {


        contactDisplay = (TextView) rootView.findViewById(R.id.contanctNumberValue);
        contactDisplay.setTypeface(typeface);


        contactDisplay.setText(dataModel.getTelNo());
        //contactDisplay.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));
          llayout.addView(contactDisplay);
        //phoneLinearLyout.updateViewLayout(contactDisplay,);

    }
    contactDisplay = (TextView) rootView.findViewById(R.id.contanctNumberValue);
    contactDisplay.setTypeface(typeface);
    contactDisplay.setText(dataModel.getTelNo());
    //contactDisplay.setLayoutParams(new LinearLayout.LayoutParams(LinearLayout.LayoutParams.MATCH_PARENT,LinearLayout.LayoutParams.MATCH_PARENT));
      llayout.addView(contactDisplay);
    //phoneLinearLyout.updateViewLayout(contactDisplay,);

}