반응형
출처 -
프래그먼트를 붙이는 작업 도중 아래와 같은 오류가 난다면
Caused by: java.lang.IllegalStateException: The specified child already has a parent. You must call removeView() on the child's parent first.
프래그먼트의 onCreateView 함수 내 뷰를 inflate하는 부분을 살펴보자. 여러가지 이유가 있겠지만, 인플레이트를 하면서 컨테이너(container)에 바로 붙여버렸기 때문이다.
프래그먼트 MainListFragment
//MainListFragment @Override public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) { //마지막 인수가 true이면, 프래그먼트 객체생성하면서 바로 부모에 붙게 된다. View rootView = inflater.inflate(R.layout.fragment_main, container, true ); return rootView; } |
액티비티에서 아래처럼 프래그먼트를 붙이려고 하면 IllegalStateException 오류가 난다. 아래처럼 하려면, 프래그먼트의 onCreateView에서 inflate의 4번째 변수를 false로 하자.
@Override protected void onCreate(Bundle savedInstanceState) { super .onCreate(savedInstanceState); setContentView(R.layout.activity_main); if (savedInstanceState == null ) { mainfrag = new MainListFragment(); getFragmentManager().beginTransaction() .add(R.id.main_container, mainfrag, "MainList" ).commit(); } |
반응형
'개발 > 안드로이드' 카테고리의 다른 글
페이스북(facebook) 연동 하기 전 준비 (0) | 2016.04.21 |
---|---|
Edittext inputfilter (0) | 2016.04.20 |
카드뷰(cardview) 속성 (0) | 2016.04.13 |
안드로이드 비트맵 drawable 간에 변환하기 (0) | 2016.04.07 |
GCM 푸시서버 구현하기(node.js & android) (0) | 2016.04.05 |
댓글