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

コメントを残す

メールアドレスが公開されることはありません。