android.content.Context不能在没有@Provides注释的方法的情况下提供。

5
我在升级 Hilt 至 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

谢谢,
Vikram Singh


问题已解决,只是有一个简单的错误。一位绅士协助我解决了这个问题。https://github.com/google/dagger/issues/2381 - Reprator
1个回答

0

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

1
我已经更新了我的代码,它已经用@HiltViewModel进行了注释,感谢您的努力,请拉取最新的代码并协助我。 - Reprator
嗨,我也遇到了同样的问题。@Reprator,你解决了这个问题吗? - semih
@semih,这是我报告的问题链接:https://github.com/google/dagger/issues/2381。 - Reprator
@semih,如果您需要帮助,请分享代码以获取协助。 - Reprator

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接