프레그먼트

FragmentManager와 ChildFragmentManager

허니컴(Honeycomb)부터 액티비티나 프레그먼트 안에 프레그먼트를 추가할 수 있다. 이 프레그먼트 객체를 관리하는 것이 FragmentManager다. 프레그먼트 전반에 대한 소개는 공식문서를 참고하고, 여기서는 종종 헷갈려하는 FragmentManager와 일명 ChildFragmentManager의 차이점에 대해서만 설명한다. 먼저 ChildFragmentManager라는 용어부터 짚고 넘어가자. ChildFragmentManager라는 클래스는 따로 없다.  대신, Activity.getFragmentManager()나 Fragment.getFragmentManager()에서 반환하면 FragmentManager(이하 FM), Fragment.getChildFragmentManager() 메소드에서 반환되는 FragmentManager 객체를 ChildFragmentManager(이하 CFM)라고 보통 부른다. FM과 CFM …

FragmentManager와 ChildFragmentManager 더 보기 »

java.lang.IllegalStateException: Failure saving state: … has target not in fragment manager: …

프레그먼트를 사용하다보면, 아래와 같은 에러를 만날 수 있다. Shutting down VM FATAL EXCEPTION: main Process: me.sunphiz.android.fragment, PID: 18882 java.lang.IllegalStateException: Failure saving state: CalleeFragment{68fee09 #7 CalleeFragment} has target not in fragment manager: CallerFragment{9c5480e} at android.support.v4.app.FragmentManagerImpl.saveAllState(FragmentManager.java:1843) at android.support.v4.app.FragmentController.saveAllState(FragmentController.java:134) at android.support.v4.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:566) at android.support.v7.app.AppCompatActivity.onSaveInstanceState(AppCompatActivity.java:498) at android.app.Activity.performSaveInstanceState(Activity.java:1474) at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1317) at android.app.ActivityThread.callCallActivityOnSaveInstanceState(ActivityThread.java:5398) at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:4700) at android.app.ActivityThread.handleStopActivity(ActivityThread.java:4774) at android.app.ActivityThread.access$1400(ActivityThread.java:222) at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1819) at …

java.lang.IllegalStateException: Failure saving state: … has target not in fragment manager: … 더 보기 »

알듯 말듯한 안드로이드의 컴포넌트들

컴포넌트(Component) 액티비티, 서비스, 브로드캐스트 리시버, 컨텐츠 프로바이더를 안드로이드 4대 컴포넌트라 합니다. 4대 컴포넌트 중 컨텐츠 프로바이더는 인텐트로 실행하지 않습니다. 4대 컴포넌트 중 브로드캐스트 리시버는 AndroidManifest.xml에 등록하지 않고도 사용할 수 있으며, 이를 동적 브로드캐스트 리시버라 부릅니다. 동적 브로드캐스트 리시버는 선택이 아닌 필수로, 동적 브로드캐스트 리시버를 통해서만 수신할 수 있는 브로드캐스트가 있습니다. 4대 컴포넌트 중 가장 많이 …

알듯 말듯한 안드로이드의 컴포넌트들 더 보기 »