반응형
- Hilt 의존성 주입과 Fragment를 같이 사용한다면 setRetainInstance() 사용하면 안됩니다
setRetainInstance() 를 사용하게되면 구성이 변경되어도 Fragment의 인스턴스가 유지되어
Hilt사용시 생성되는 Hilt_MyFragment.java ->onAttach() -> Preconditions.checkState() 에서 throw 될 수밖에 없습니다. - Activity의 바인딩이 완료되기 전에 fragment의 onViewCreated() -> initializeViews() -> RequiredActivity() as ... 가 호출됨
Activity를 바인딩할 때 Inflate 과정에서 fragment를 바인딩하게되는데 이 때 Activity의 바인딩이 끝나지 않은 상태에서 Activity의 binding 에 접근해서 crash가 발생했습니다
- Fragment 특성상 Activity의 binding이 완료된 후 initialize 하도록 수정
- setRetainInstance 제거 -> deprecated됨, hilt와 fragment를 사용한다면 fragment의 instance가 유지되어선 안된다.
retainInstance=true를 삭제 함에 따라 기존동작에 영향이 있을 수 있다고 함
언젠가 또 겪을수도 있을것 같아서 적어두었습니다
참고 :
Kyle의 PR리뷰
반응형
'안드로이드 > 에러' 카테고리의 다른 글
웹뷰에서 base64 이미지 받을때 에러 (ScopeStorage Primary directory) (0) | 2023.04.10 |
---|---|
[Android] Fragment 에서 ActivityResultLauncher 사용시 앱 죽는 문제 (0) | 2022.12.06 |
GoogleCloud Speech (STT)에러 (0) | 2022.11.24 |
SimpleCall (카카오엔터 SDK) & STT문제 (5) | 2022.11.22 |
Hilt 빌드 에러시 DefaultActivityViewModelFactory (0) | 2022.11.07 |