我正在使用android依赖注入,并且可以工作,但是,如果子组件的模块提供了依赖,则好像无法注入片段:
通知应用程序组件具有@Singleton范围:
@Singleton
@Component(
modules = [
AndroidInjectionModule::class,
...
ActivityBuilder::class,
FragmentBuilder::class]
)
interface AppComponent { ...
通知活动具有不同的范围(@ActivityScope):
@Module
abstract class ActivityBuilder {
@ContributesAndroidInjector(modules = [MyActivityModule::class])
@ActivityScope
abstract fun bindMyActivity(): MyActivity
片段使用与活动相同的作用域:
@Module
abstract class FragmentBuilder {
@ContributesAndroidInjector
@ActivityScope
abstract fun bindMyFragment(): MyFragment
问题:假设MyActivityModule具有创建依赖项Abc的“ @Provides ... @ ActivityScope”方法,为什么不能将其注入MyFragment? ({Abc cannot be provided without an @Inject constructor or an @Provides-annotated method
,提到了AppComponent)。
我不得不提到片段是通过AndroidSupportInjection.inject(this)
注入的。如果问题是由于父组件看不到子组件的依赖性,那么在我的情况下注入片段的正确方法是什么?