android - 如果没有 @Provides-annotated 方法,就无法提供 android.content.Context
问题描述
在刀柄更新到 2.32-alpha 后,我收到以下错误。
即使在提供了相关元素之后,它也在抱怨它。我很确定它与范围有关,但无法整理出来,日志如下,
^C:\Users\VikramSingh\Desktop\work\Mine\mobiquity\app\build\generated\source\kapt\debug\reprator\mobiquity\MobiQuityApp_HiltComponents.java:145: error: [Dagger/MissingBinding] @dagger.hilt.android.qualifiers.ActivityContext android.content.Context cannot be provided without an @Provides-annotated method.
public abstract static class SingletonC implements HiltWrapper_ActivityRetainedComponentManager_ActivityRetainedComponentBuilderEntryPoint,
^
A binding with matching key exists in component: reprator.mobiquity.MobiQuityApp_HiltComponents.ActivityC
@dagger.hilt.android.qualifiers.ActivityContext android.content.Context is injected at
reprator.mobiquity.addcity.di.AddCityModule.provideGeoCoder(context)
android.location.Geocoder is injected at
reprator.mobiquity.addcity.di.AddCityModule.provideReverseGeoCoding(geoCoder)
reprator.mobiquity.addcity.ReverseGeoCoding is injected at
reprator.mobiquity.addcity.AddLocationViewModal(�, reverseGeoCoding, �)
reprator.mobiquity.addcity.AddLocationViewModal is injected at
reprator.mobiquity.addcity.AddLocationViewModal_HiltModules.BindsModule.binds(arg0)
@dagger.hilt.android.internal.lifecycle.HiltViewModelMap java.util.Map<java.lang.String,javax.inject.Provider<androidx.lifecycle.ViewModel>> is requested at
dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.ViewModelFactoriesEntryPoint.getHiltViewModelMap() [reprator.mobiquity.MobiQuityApp_HiltComponents.SingletonC ? reprator.mobiquity.MobiQuityApp_HiltComponents.ActivityRetainedC ? reprator.mobiquity.MobiQuityApp_HiltComponents.ViewModelC][WARN] Incremental annotation processing requested, but support is disabled because the following processors are not incremental: androidx.room.RoomProcessor (DYNAMIC).
存储库:https ://github.com/TheReprator/mobiquity/tree/hilt_scope_issue
问候,维克拉姆·辛格
解决方案
我认为您应该尝试使用@ActivityScoped
or注释提供方法@ActivityRetainedScoped
,并且我在您的代码中注意到有关 AddLocationViewModal 的另一件事,我认为您应该使用注释@HiltViewModel
并使其类似于以下代码:
@HiltViewModel
class AddLocationViewModal @Inject constructor(
private val savedStateHandle: SavedStateHandle,
private val appCoroutineDispatchers: AppCoroutineDispatchers,
private val reverseGeoCoding: ReverseGeoCoding,
private val locationUseCase: LocationUseCase
) : ViewModel() {...}
推荐阅读
- laravel - 如何在nuxtjs中获取登录的用户数据?
- javascript - 本地 WordPress 构建的 URL/脚本问题
- c++ - Google Test + VSCode + WINDOWS,如何在window OS中使用gtest?
- python - 如何为我的案例做一个索引增量?
- reactjs - UseEffect - 否则带有大括号会导致错误
- c - c:如何编写c程序来检测和识别读取文件的令牌?
- javascript - 当一个 URL 有参数的时候,为什么我们要把子组件放在一个属性里面
- julia - 在 Julia 中转换字符串和滚动均值的类变异操作
- android - Firestore:多个 whereArrayContains
- java - 是否可以更改我在 java 中覆盖的方法的参数,还是需要重载它?