android開発

動的に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!