개발/트러블슈팅
[안드로이드] FragmentContainerView NullPointerException 해결
로키입니다
2023. 5. 27. 19:07
defaultNavHost 설정, navGraph 설정, NavHostFragment, NavController 모두 잘 작성된 코드인데도
종종 아래 오류와 같이 NavHostFragment NullPointerException이 발생하는 경우가 있습니다.
java.lang.RuntimeException:
Unable to start activity ComponentInfo{com.sample.yolo/com.sample.presentation.view.MainActivity}: java.lang.NullPointerException:
null cannot be cast to non-null type androidx.navigation.fragment.NavHostFragment
아래 오류 코드를 보면 NavHostFragment를 발견하지 못해서 발생한 오류라고 나오는데,
클린 빌드, 캐시 삭제, 의존성 버전 수정등 어떠한 방법을 시도해도 해결되지 못했습니다.

✔️ 트러블슈팅
android:name="androidx.navigation.fragment.NavHostFragment"
레이아웃 파일의 FragmentContainerView에 위 속성을 추가해주면 해결할 수 있습니다.
일반적으로 JetPack Navigation을 위한 NavController를 초기화하는 부분의 코드를 작성할 때
supportFragmentManager에서 FragmentContainerView를 가져온 뒤 NavHostFragment로 변환한 뒤
NavHostFragment에서 findNavController 메서드를 이용하여 객체를 생성합니다.
따라서 FragmentContainerView에서 어떤 종류의 Fragment를 지정해주는 작업이 필요한데, 그 역할을 수행하는 속성이 바로 위의 "name" 속성입니다.
Jetpack Navigation 공식 문서에서도 기본적으로 name 속성을 포함하고 있는 것을 볼 수 있습니다.