我正在使用匕首和刀柄,我想将 @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
这是我的 HomeActivityModule -
@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)
}
}
Edited :
因为 ActivityRetainedComponent 可以跨配置更改而存在,而 ActivityComponent 则不能。
如果你想注入@ActivityContext,你的模块应该安装在ActivityComponent中,并且注入的对象必须是@ActivityScoped。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)