Dagger和Hilt从模块将ActivityContext注入适配器



我正在使用dagger和hilt,我想将@ActivityContext从模块注入适配器,但我收到了这个错误-

ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1ANTLR Runtime version 4.5.3 used for parser compilation does not match the current runtime version 4.7.1ANTLR Tool version 4.5.3 used for code generation does not match the current runtime version 4.7.1ANTLR Runtime version 4.5.3 used for parser compilation does not match the current runtime version 4.7.1/mnt/My Projects/app/build/generated/source/kapt/debug/app/myapp/MyApp_HiltComponents.java:156: error: [Dagger/MissingBinding] @dagger.hilt.android.qualifiers.ActivityContext android.content.Context cannot be provided without an @Provides-annotated method.
public abstract static class ApplicationC implements MyApp_GeneratedInjector,
^
@dagger.hilt.android.qualifiers.ActivityContext android.content.Context is injected at
app.myapp.di.modules.activitiesModules.HomeActivityModule.provideAdapterFragmentState(context)
app.myapp.ui.base.AdapterFragmentState is injected at
app.myapp.ui.home.HomeActivity.adapterFragmentState
app.myapp.ui.home.HomeActivity is injected at

这是我的家庭活动模块-

@Module
@InstallIn(ActivityRetainedComponent::class)
object HomeActivityModule {
@Provides
@ActivityRetainedScoped
fun provideAdapterFragmentState(@ActivityContext context: Context): AdapterFragmentState {
return AdapterFragmentState(context)
}
}

这是我的适配器-

@ActivityRetainedScoped
class AdapterFragmentState @Inject constructor(@ActivityContext context: Context)
: FragmentStateAdapter(context as AppCompatActivity){

哪个部分错了?

@Module
@InstallIn(ActivityComponent::class)
object HomeActivityModule {
@Provides
@ActivityScoped
fun provideAdapterFragmentState(@ActivityContext context: Context): AdapterFragmentState {
return AdapterFragmentState(context)
}
}

编辑:

因为ActivityRetainedComponent存在于配置更改中,而ActivityComponent不存在。

如果你想注入@ActivityContext,你的模块应该安装在ActivityComponent中,并且注入的对象必须是@ActivityScoped。

最新更新