이슈
MainActivity에서 FragmentStateAdapter를 injection 하고자 한다. 그러기 위해서는 FragmentStateAdapter의 constructor의 parameter로 FragmentActivity를 넘겨줘야 한다.
참고
https://stackoverflow.com/a/62856164
해결
@Module
@InstallIn(ActivityComponent::class)
object ActivityModule {
@Provides
@ActivityScoped
fun provideMyAdapter(@ActivityContext context: Context) =
MyAdapter(context as FragmentActivity)
}
참고한 링크에서는 모듈에서 Adapter의 parameter를 수정없이 그대로 context로 넣는다. Adpater의 constructor 코드 안에 context를 FragmentActivity로 형변환해주던데, 나는 Module 단에서 형변환을 했다.
Injection을 하는 단계에서 parameter를 필요에 맞게 넣어주는 것까지도 Injection의 역할로 봐야하지 않을까 고민하고 작성했다.
앱 실행 시 잘 돌아간다.