Dagger 2 - 为什么会出现循环引用错误?

Dagger 2 - Why am I getting circular reference error?

我有一个已经可以工作的匕首实现。我的 android 应用程序 class 是启动 Dagger2 实现的应用程序。

然而,当我添加一个使用 Activity 参数的方法时,我得到了匕首错误:

error: [ComponentProcessor:MiscError] dagger.internal.codegen.ComponentProcessor was unable to process this interface because not all of its dependencies could be resolved. Check for compilation errors or a circular dependency with generated code.

我测试了不同的变体,只有当我使用 Activity 参数时它才会抛出错误:

class MyApplication: Application() {

    ...

    fun addingThisFunWorks()

    fun addingThisFunReturningSomethingWorks(): ReturnClass

    fun addingThisFunWithParameterWorks(value: Int)

    fun addingThisFunThrowsDaggerError(activity: Activity)

}

是否因为 Activity class 依赖于应用程序 class 并且不知何故变成了循环?

问题是 Activity 和 class 中的 Fragment 引用以某种方式被解释为循环引用。

要修复它,我需要创建一个具有我需要的功能的“中级”管理器。

例如:

class MyApplication: Application() {

    ...

    fun addingThisFunWorks()

    fun addingThisFunReturningSomethingWorks(): ReturnClass

    fun addingThisFunWithParameterWorks(value: Int)

    fun returnMyManager(): MyManager

}

并且有:

class MyManager {
    fun addingThisFunThrowsDaggerError(activity: Activity)
}