【Android】「The specified child already has a parent」の問題を解決

2015-06-06

【Android】「The specified child already has a parent」の問題を解決


このエントリーをはてなブックマークに追加

とあるViewにaddViewとかでViewを追加しようとする時に
「java.lang.IllegalStateException: The specified child already has a parent. You must call removeView()」
みたいなエラーメッセージが出てくることがある。
原因はaddViewしようとしているViewがすでに他のViewで使用されているから消してくれ、ってことらしい。

解決法

とりあえずaddViewする前に親が存在していたらそいつを消すようにする。

ViewGroup parent = (ViewGroup) mainView.getParent();
if (parent != null) {
    parent.removeAllViews();
}
mainView.addView(subView);

こんな感じで親のViewを消してからaddViewするようにしたらエラー解消できた。