Dagger 2调度Android Injector

问题描述 投票:0回答:2

我正在尝试使用新的匕首api进行活动注射,但我收到错误lateinit property dispatchingAndroidInjector has not been initialized

// AppComponent.kt
@Singleton
@Component(modules = [
    AndroidSupportInjectionModule::class,
    ActivitiesModule::class
])
interface AppComponent {
    fun inject(app: Application)

    @Component.Builder
    interface Builder {

        fun build(): AppComponent

        @BindsInstance
        fun bindApplication(application: Application): Builder
    }
}

活动模块文件

@Module
abstract class ActivitiesModule {

    @ContributesAndroidInjector
    abstract fun provideRestaurantMainActivity(): MainActivity
}

在我的MainActivity中,我称之为注射

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        AndroidInjection.inject(this)
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

在我的申请中

class App : Application(), HasActivityInjector{

@Inject
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Activity>
override fun activityInjector(): AndroidInjector<Activity> = dispatchingAndroidInjector

override fun onCreate() {
    super.onCreate()
    DaggerAppComponent
            .builder()
            .bindApplication(this)
            .build()
            .inject(this)
}

}

在模块和组件的挂钩中还有什么我想念的吗?

android dagger
2个回答
1
投票

这应该是“有趣的注入(应用程序:应用程序)”

有趣注入(app:App)


0
投票

我认为你使用错误版本的AndroidInjectionAndroidSupportInjectionModule

尝试用AndroidSupportInjectionModule::class替换AndroidInjectionModule::class

© www.soinside.com 2019 - 2024. All rights reserved.