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

【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 するようにしたらエラー解消できた。