Android:Kotlin与匕首活动模块问题

我想用Dagger 2给一些职业注入活力。 所以我将我的项目添加到ActivityModule类。 当我建立我的项目时,我得到一个错误:

 .... AppComponent.java:13: error: android.app.Activity cannot be provided without an @Inject constructor or from an @Provides-annotated method. 

所有其他模块正常工作。 只有当我在项目上添加活动模块,然后我越来越错误:)

 class App : Application(), HasActivityInjector { @field:Inject lateinit var component: AppComponent @field:Inject lateinit var injector: DispatchingAndroidInjector<Activity> override fun activityInjector() = injector override fun onCreate() { super.onCreate(); let { instance = this } DaggerAppComponent.builder() .appModule(AppModule(this)) .build() .apply { inject(this@App); component = this } .inject(this) ...... } private fun registerCallBack() = registerActivityLifecycleCallbacks(object : Application.ActivityLifecycleCallbacks { override fun onActivityCreated(activity: Activity, savedInstanceState: Bundle?) { component.inject(activity) } ... ... } } @AppScope @Component(modules = arrayOf( AndroidInjectionModule::class, AndroidSupportInjectionModule::class, ActivityBuilderModule::class, FragmentBuilderModule::class, AppModule::class, ActivityModule::class) ) interface AppComponent { interface Builder { @BindsInstance fun application(app: App): Builder fun build(): AppComponent } @ApplicationContext fun getContext(): Context fun getActivity(): Activity fun inject(application: App) fun inject(activity: Activity) } @Module() class ActivityModule(private val activity: Activity) { @Provides @PerActivity @ActivityContext fun provideActivity() = activity @Provides @PerActivity @ActivityContext fun provideContext() = activity } @Scope @Retention(AnnotationRetention.RUNTIME) annotation class AppScope @Scope @Retention(AnnotationRetention.RUNTIME) annotation class PerActivity @Scope @Retention(AnnotationRetention.RUNTIME) annotation class PerFragment @Qualifier @Retention(AnnotationRetention.RUNTIME) annotation class ActivityContext @Qualifier @Retention(AnnotationRetention.RUNTIME) annotation class ApplicationContext class HomeFragment : BaseFragment(){ override fun onViewCreated(view: View?, savedInstanceState: Bundle?) { ... val example = (context as App).component.getActivity() ... } } 

这条线是问题。

 fun getActivity(): Activity 

AppComponent提供了Activity但不提供其模块@Provides一个, Activity没有一个具有@Inject的构造函数。