2017-07-15 1 views
-1

私は、レイアウトフラグメントを追加しようとしている中でレイアウトフラグメントが含まれるが、私はエラーを取得維持する方法:アンドロイド

Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first. 

これは、フラグメントはrev_lay_drawer_nav.xmlに含まれている方法です。

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:orientation="horizontal"> 

    <LinearLayout 
     android:id="@+id/helpAboutLL" 
     android:layout_width="match_parent" 
     android:layout_height="match_parent" 
     android:orientation="vertical"> 

     <Button 
      android:id="@+id/about_bags_bttn" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:text="About BAGS" /> 

     <Button 
      android:id="@+id/help_bttn" 
      android:layout_width="match_parent" 
      android:layout_height="wrap_content" 
      android:src="@drawable/rev_dr_thinner_help_top" 
      android:text="Help" /> 

    </LinearLayout> 

</LinearLayout> 

これは私がそれを呼んでいる方法です:

mContext = context; 

revLayDrawerLayoutInflater = LayoutInflater.from(mContext); 
revLayDrawerView = revLayDrawerLayoutInflater.inflate(R.layout.rev_lay_drawer_nav, null, false); 

LinearLayout helpAboutLL = (LinearLayout) revLayDrawerView.findViewById(R.id.helpAboutLL); 

LinearLayout revDrawerNavViewContainer = new LinearLayout(mContext); 
revDrawerNavViewContainer.setOrientation(LinearLayout.VERTICAL); 

revDrawerNavViewContainer.addView(helpAboutLL); 

Whをそれについては正しい方向に行くのですか?

+2

を追加必要とする理由


は、それは明らかではありませんあなたのXMLで定義されている親ビューです。新しい親を割り当てようとしていますが、Viewは2つのViewの親の子ではありません。最初のLinearLayoutを使わずにxmlを作成してみてください。このようにしてhelpAboutLLには親が1つあります。私はそれがうまくいくと思います。 – Giannis

答えて

1

findViewByIdを使用したということは、すでに親レイアウトのビューがあることを意味します。

他のレイアウトに他の親ビューがある間はビューを追加できません。ネストされたLinearLayoutsはので、あなたのXMLに

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:id="@+id/helpAboutLL" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="vertical"> 

    <Button 
     android:id="@+id/about_bags_bttn" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:text="About BAGS" /> 

    <Button 
     android:id="@+id/help_bttn" 
     android:layout_width="match_parent" 
     android:layout_height="wrap_content" 
     android:src="@drawable/rev_dr_thinner_help_top" 
     android:text="Help" /> 

</LinearLayout> 

を変更したり、膨らませるとエラーがhelpAboutLLが持つIDでずっとinfo.TheののLinearLayoutを提供し、ちょうどその

LinearLayout revDrawerNavViewContainer = new LinearLayout(mContext); 
revDrawerNavViewContainer.setOrientation(LinearLayout.VERTICAL); 

View helpAboutLL = revLayDrawerLayoutInflater.inflate(R.layout.rev_lay_drawer_nav, null, false); 
revDrawerNavViewContainer.addView(helpAboutLL);