【问题标题】:android.content.Context cannot be provided without an @Provides-annotated method如果没有 @Provides-annotated 方法,就无法提供 android.content.Context
【发布时间】:2023-03-06 11:59:01
【问题描述】:

在刀柄更新到 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

问候, 维克拉姆·辛格

【问题讨论】:

标签: android kotlin dependency-injection dagger-2 dagger-hilt


【解决方案1】:

我认为您应该尝试使用 @ActivityScoped@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() {...}

【讨论】:

  • 我已经更新了我的代码,它已经用@HiltViewModel注释了,感谢你的努力,请拉出最新的代码并帮助我
  • 嗨,我遇到了同样的问题。 @Reprator 这个问题你解决了吗?
  • @semih,这是问题链接,由我报告,github.com/google/dagger/issues/2381
  • @semih,如果您需要帮助,请分享代码以获得帮助
猜你喜欢
  • 1970-01-01
  • 2022-11-28
  • 1970-01-01
  • 2019-06-21
  • 1970-01-01
  • 2017-11-05
  • 2018-08-04
  • 1970-01-01
  • 2019-03-09
相关资源
最近更新 更多