如果没有 @Provides 注释的方法,则无法提供 Hilt

WIS*_*SHY 0 android dagger dagger-hilt

我有一个活动视图模型

\n
@HiltViewModel\nclass MainViewModel @Inject constructor(\nprivate val repository: UserRepository\n)     : ViewModel() {\n\n}\n
Run Code Online (Sandbox Code Playgroud)\n

存储库接口

\n
interface UserRepository {\nsuspend fun loginUser(username: String, password: String): Pair<Boolean, String>\n}\n
Run Code Online (Sandbox Code Playgroud)\n

用户数据源类如下

\n
internal class UserDataSource @Inject constructor(private val octaveApi: OctaveApi) :\nUserRepository {\n\noverride suspend fun loginUser(username: String, password: String): Pair<Boolean, String> {\n    return Pair(false, "unsucess")\n}\n}\n
Run Code Online (Sandbox Code Playgroud)\n

这是我的匕首实现

\n
@Module\n@InstallIn(SingletonComponent::class)\nabstract class ApiModule {\n\n  @Module\n  @InstallIn(SingletonComponent::class)\n  object Providers {\n\n    @Provides\n    @Singleton\n    internal fun provideOctaveApi(retrofit: Retrofit): OctaveApi =\n      retrofit.create(OctaveApi::class.java)\n  }\n}\n\n@Module\n@InstallIn(ActivityRetainedComponent::class)\nabstract class RetainedDataModule {\n\n  @Binds\n  internal abstract fun bindUserRepository(userDataSource: UserDataSource):     UserRepository\n}\n
Run Code Online (Sandbox Code Playgroud)\n

当我构建项目时,我收到此错误

\n
/OctaveDashboard/app/build/generated/source/kapt/stagingExternalDebug/com/octave/OctaveApplication_HiltComponents.java:125: error: [Dagger/MissingBinding] com.octave.data.user.UserRepository cannot be provided without an @Provides-annotated method.\n  public abstract static class SingletonC implements OctaveApplication_GeneratedInjector,\n                     ^\n  com.octave.data.user.UserRepository is injected at\n      com.octave.MainViewModel(cornersRepository)\n  com.octave.MainViewModel is injected at\n      com.octave.MainViewModel_HiltModules.BindsModule.binds(vm)\n  @dagger.hilt.android.internal.lifecycle.HiltViewModelMap java.util.Map<java.lang.String,javax.inject.Provider<androidx.lifecycle.ViewModel>> is requested at\n      dagger.hilt.android.internal.lifecycle.HiltViewModelFactory.ViewModelFactoriesEntryPoint.getHiltViewModelMap() [com.octave.OctaveApplication_HiltComponents.SingletonC \xe2\x86\x92 com.octave.OctaveApplication_HiltComponents.ActivityRetainedC \xe2\x86\x92 com.octave.OctaveApplication_HiltComponents.ViewModelC]\n
Run Code Online (Sandbox Code Playgroud)\n

似乎无法弄清楚是什么导致了这个问题。

\n

WIS*_*SHY 10

我的应用程序模块中缺少模块依赖项,这导致了此问题。能够通过包含它来修复。

  • 这也是我的问题。谢谢 :) (3认同)