안드로이드/에러

Hilt 의존성 주입과 Fragment 문제

코딩하는후운 2022. 12. 5. 16:31
반응형
  1. Hilt 의존성 주입과 Fragment를 같이 사용한다면 setRetainInstance() 사용하면 안됩니다
    setRetainInstance() 를 사용하게되면 구성이 변경되어도 Fragment의 인스턴스가 유지되어
    Hilt사용시 생성되는 Hilt_MyFragment.java ->onAttach() -> Preconditions.checkState() 에서 throw 될 수밖에 없습니다.
  2. 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리뷰 

반응형