아래는 코모스튜디오가 직접 만든 무료 앱이에요(한 번만 봐주세요 ^^)
Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
뷰페이져에 달린 얘들에서 디스트로이 뷰 하면서 제거 해줘야 한다.
@Override
public void onDestroyView() {
super.onDestroyView();
if(mRootView !=null){
ViewGroup parentViewGroup = (ViewGroup) mRootView.getParent();
if( null != parentViewGroup ) {
parentViewGroup.removeView( mRootView );
}
}
}
굳이
메인 프래그먼트는 destroy 안해도 된다. 디스트로이 하면 죽는다. 아래 처럼.
java.lang.RuntimeException: Unable to destroy activity {com.comostudio.aaa/com.comostudio.aaa.ui.MainActivity}: java.lang.NullPointerException
요래... 지우고 시작 하지..
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container,
Bundle savedInstanceState) {
//super.onCreateView(inflater, container, savedInstanceState);
// Inflate the layout for this fragment
if(mRootView == null) {
container.removeAllViews();
try{
mRootView = inflater.inflate(R.layout.aaa, container, false);
}catch (InflateException e) {
e.printStackTrace();
}
그리고, contanier, false를 꼭 해주도록.
그러나 아직 완전히 끝난 것은 아니다.
//Caused by: java.lang.IllegalStateException: The specified child already has a parent.
// You must call removeView() on the child's parent first.
if(mRootView==null){
}else {
//꼭 여기 해줘야 한다..
ViewGroup parentViewGroup = (ViewGroup) mRootView.getParent();
if (null != parentViewGroup) {
parentViewGroup.removeView(mRootView);
}
}
여기서 해줘야 완전히 끝난다.
onCreateView에 여러번 들어 오는데... 올 때 마다 검사해서 아빠를 없애야 한다...
이게..
100% 재현 경로
앱 포즈하고
노티 제거 하고
앱 실행 하고
앱 포즈 하고
노티 실행 하면 죽음.
프래그먼트는 알고 쓰면 달고 모르고 그냥 쓰면 쓴지 단지도 모른다...
나는 아직도 모르고 그냥 쓰지도 못한다....
' [안드로이드 공부] > 프래그먼트' 카테고리의 다른 글
모든 게시물은 코모스튜디오의 소유이며, 무단 복제 수정은 절대 불가입니다. |
퍼가실 경우 댓글과 블로그 주소를 남기고 해당 게시물에 출처를 명확히 밝히세요. |