繁体   English   中英

Android Dagger - Hilt ViewModel 无法检测依赖关系

[英]Android Dagger - Hilt ViewModel can't detect dependency

我在运行应用程序时面临运行时问题。 我是匕首和剑柄的新手。 请帮我解决问题。 构建问题:

error: [Dagger/DependencyCycle] Found a dependency cycle:
  public abstract static class SingletonC implements AppController_GeneratedInjector,
                         ^
      com.hilt.hiltsampleproject.app.ApiHelper is injected at
          com.hilt.hiltsampleproject.app.ApiHelperImpl(apiHelper)
      com.hilt.hiltsampleproject.app.ApiHelperImpl is injected at
          com.hilt.hiltsampleproject.app.AppModule.provideApiHelper(apiHelper)
      com.hilt.hiltsampleproject.app.ApiHelper is injected at
          com.hilt.hiltsampleproject.repositories.MainRepository(apiHelper)
      com.hilt.hiltsampleproject.repositories.MainRepository is injected at
          com.hilt.hiltsampleproject.ui.posts.PostViewModel(mainRepository)
      javax.inject.Provider<com.hilt.hiltsampleproject.ui.posts.PostViewModel> is injected at
          com.hilt.hiltsampleproject.app.ViewModelByDaggerFactory(viewModelProvider)
      com.hilt.hiltsampleproject.app.ViewModelByDaggerFactory<com.hilt.hiltsampleproject.ui.posts.PostViewModel> is injected at
          com.hilt.hiltsampleproject.ui.posts.PostFragment.viewModelFactory
      com.hilt.hiltsampleproject.ui.posts.PostFragment is injected at
          com.hilt.hiltsampleproject.ui.posts.PostFragment_GeneratedInjector.injectPostFragment(com.hilt.hiltsampleproject.ui.posts.PostFragment) [com.hilt.hiltsampleproject.app.AppController_HiltComponents.SingletonC ? com.hilt.hiltsampleproject.app.AppController_HiltComponents.ActivityRetainedC ? com.hilt.hiltsampleproject.app.AppController_HiltComponents.ActivityC ? com.hilt.hiltsampleproject.app.AppController_HiltComponents.FragmentC]

Gradle 依赖:

implementation 'com.google.dagger:hilt-android:2.33-beta'
kapt 'com.google.dagger:hilt-compiler:2.33-beta'

// Hilt Jetpack Integrations
implementation 'androidx.hilt:hilt-lifecycle-viewmodel:1.0.0-alpha03'
annotationProcessor 'androidx.hilt:hilt-compiler:1.0.0-beta01'

后段:

private val postViewModel: PostViewModel by viewModels()

后视图模型:

@HiltViewModel class PostViewModel @Inject constructor(private val mainRepository: MainRepository) : ViewModel()

主要存储库:

class MainRepository @Inject constructor(
private val apiHelper: ApiHelper)

ApiHelper:

interface ApiHelper {
suspend fun getPosts(): Response<Posts>}

我查看了 github 样本。

问题是您有一个 DependencyCycle:

class ApiHelperImpl @Inject constructor(
    private val apiHelper: ApiHelper
) : ApiHelper {
...
}

您正在尝试构造/提供ApiHelper的实例,该实例也需要ApiHelper的实例,因此,要构造第一个 ApiHelper,Hilt/Dagger 必须构造依赖项,所以这个 ApiHelperImpl 需要一个 ApiHelper ......它需要一个 ApiHelper。 ..这需要一个ApiHelper ......希望你能明白:)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM