*코드에러 - The specified child already has a parent. You must call removeView() on the child's parent first.
이 오류는 한 View가 이미 다른 부모 View에 속해 있을 때 발생합니다. View는 항상 하나의 부모 View만 가질 수 있기 때문입니다. 새로운 부모 View에 추가하려는 경우 기존 부모 View에서 removeView() 메서드를 호출하여 기존 View를 제거해야 합니다.
이 오류는 대개 View를 동적으로 생성하고 추가하는 경우 발생합니다. 예를 들어, LayoutInflater를 사용하여 XML 파일에서 View를 인플레이션하여 ViewGroup에 추가하는 경우, inflate() 메서드는 새로운 View 객체를 만들어 반환합니다. 이 새로운 View 객체는 이전에 다른 ViewGroup에 추가되었던 경우가 많습니다.
이 경우, View 객체를 새로 만들었으므로, View의 부모 View가 없습니다. 즉, View 객체를 새로운 ViewGroup에 추가할 수 있습니다. 하지만 이미 부모 View가 있는 View를 새로운 ViewGroup에 추가하려고 하면, 위와 같은 오류가 발생합니다.
따라서 View를 새로운 ViewGroup에 추가하기 전에, 만약 해당 View가 이미 다른 부모 View에 속해 있다면, 해당 부모 View에서 removeView() 메서드를 호출하여 View를 제거해야 합니다. 그런 다음 View를 새로운 ViewGroup에 추가할 수 있습니다.
// 자식의 부모에서 removeView() 메서드를 호출
ViewGroup parent = (ViewGroup) timePicker.getParent();
if (parent != null) {
parent.removeView(timePicker);
}
-타임피커라는 뷰에서 부모를 호출하여 부모가 null값이 아니라면 타임피커의 부모를 삭제함
'Android App > Error' 카테고리의 다른 글
코드에러 - [SurfaceView - ... ]cancelBuffer: BufferQueue has been abandoned (0) | 2023.04.20 |
---|---|
코드 에러 - unresolved (0) | 2022.11.01 |
코틀린 업데이트 에러 - The binary version of its metadata is 1.7.1, expected version is 1.5.1. (0) | 2022.10.27 |