안드로이드/에러
Hilt 의존성 주입과 Fragment 문제
코딩하는후운
2022. 12. 5. 16:31
반응형
- 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리뷰
반응형