使用AndroidSupportInjection.inject(this)
注入片段时,如何访问模块中的片段实例?我正在尝试注入Androids NavController类,但我需要一个活动或片段的实例。我该怎么做?
如果您正在使用ContributesAndroidInjector,则应该能够通过生成的子组件中包含的任何模块访问Fragment实例。
EG
@Module
abstract class MyContributesModule {
@ContributesAndroidInjector(modules = [MyFragmentModule::class])
internal abstract fun myFragment(): MyFragment
}
@Module
abstract class MyFragmentModule {
@Binds
internal abstract fun myFragmentInteractor(myFragmentInteractorImpl: MyFragmentInteractorImpl): MyFragmentInteractor
}
interface MyFragmentInteractor {
fun doSomething()
}
class MyFragmentInteractorImpl @Inject constructor(private val myFragment : MyFragment) : MyFragmentInteractor {
override fun doSomething() {
// doSomething with myFragment
}
}
class MyFragment : Fragment() {
@Inject
lateinit var interactor: MyFragmentInteractor
override fun onAttach(context: Context?) {
AndroidSupportInjection.inject(this)
super.onAttach(context)
}