Posted at

動的にxmlレイアウトを追加する。

久しぶりに使ったら軽くハマったので備忘録

このエラーに軽く悩んだ

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

LinearLayout linearLayout = (LinearLayout) view.findViewById(R.id.my_layout);

LinearLayout v = (LinearLayout)getActivity().getLayoutInflater().inflate(R.layout.custom_layout, null);

for (int i = 0; i < 10; i++) {
linearLayout.addView(v);
}

と書いていたのだがこれだと「v」が一回目のforの中で親のレイアウトの管理下になるため、

2回目の繰り返しでエラーになる。

なのでforの中でvを都度定義した。

LinearLayout linearLayout = (LinearLayout) view.findViewById(R.id.my_layout);

for (int i = 0; i < 10; i++) {
LinearLayout v = (LinearLayout)getActivity().getLayoutInflater().inflate(R.layout.custom_layout, null);
linearLayout.addView(v);
}

これで多分おk!