0

私は、線形レイアウトを含むfrgmentsビュー以外のアイテムを膨張させています。それは問題はありませんが、問題は、私がそれを参照していて、線形レイアウトでプログラムでTextViewを追加しようとすると、エラーになります。どんな助けが望ましいでしょう。java.lang.IllegalStateException:プログラムでインフレータブルレイアウトにビューを追加しています

エラー: java.lang.IllegalStateException:指定された子にはすでに親があります。子の親で最初にremoveView()を呼び出す必要があります。

Fragment.java

public class ShortFrag extends Fragment{ 
    ListView listview; 
    LinearLayout row1; 
    @Override 
    public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { 

     view = inflater.inflate(R.layout.r_fragment, container, false); 

     listview=(ListView)view.findViewById(R.id.listview); 

     LayoutInflater myinflater = getLayoutInflater(); 
     ViewGroup myHeader = (ViewGroup) myinflater.inflate(R.layout.helper, listview, false); 

     row1= headerViewHolder.findViewById(R.id.linear); 

     TextView tv = getTextView(getTextView("button_one","button")); 

     //error here 
     row1.addView(tv); 

     return view; 
    } 

    private TextView getTextView(String text, String tag) { 
     TextView textView = new TextView(getActivity()); 
     textView.setTextColor(ContextCompat.getColor(getActivity(), R.color.black)); 
     textView.setTag(tag); 
     LinearLayout.LayoutParams params = new LinearLayout.LayoutParams(
       ViewGroup.LayoutParams.WRAP_CONTENT, 
       ViewPager.LayoutParams.WRAP_CONTENT 
     ); 
     textView.setLayoutParams(params); 
     textView.setGravity(Gravity.CENTER); 
     textView.setText(text); 
     textView.setPadding(10, 5, 10, 5); 
     params.setMargins(10, 0, 10, 0); 
     return textView; 
    } 
} 

r_fragment

<LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" 
    android:layout_width="match_parent" 
    android:layout_height="wrap_content" 
    android:layout_marginBottom="20dp" 
    android:orientation="vertical"> 

<Listview 
    android:id="@+id/listview" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent"/> 

</LinearLayout> 

helper.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:layout_marginBottom="20dp" 
    android:orientation="vertical"> 

<LinearLayout 
    android:id="@+id/linear" 
    android:layout_width="match_parent" 
    android:layout_height="match_parent" 
    android:orientation="horizontal"/> 

</LinearLayout> 
+3

'row1.add View(getTextView( "button_one"、 "button"))); ' - 与えられたコードでは、コンパイルされず、したがってその例外を投げることはできません。実際のコードは何ですか? –

+0

この行を置き換えます。 row1.addView(getTextView(getTextView( "button_one"、 "button")))); row1.addView(getTextView( "button_one"、 "button")); – Meenal

+0

マイクあなたは正しいです、それは私の問題を解決しました。私は私の質問を編集しました。しかし、これの理由を教えてもらえますか? –

答えて

1

はこれを試してみてください。

//error here 
row1.removeAllViews(); 
row1.addView(tv); 
関連する問題