Dagger 2 派遣 Android 喷油器

Dagger 2 Dispatching Android Injector

我正在尝试使用新匕首 api 进行 activity 注射,但出现错误 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
    }
}

Activity 模块文件

@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)
}

}

我在挂钩模块和组件时还有什么遗漏的吗?

这个"fun inject(app: Application)"应该是

有趣的注入(应用程序:应用程序)

我认为您使用了错误版本的 AndroidInjectionAndroidSupportInjectionModule

尝试更换 AndroidSupportInjectionModule::classAndroidInjectionModule::class.