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)
}
我有一个已经可以工作的匕首实现。我的 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)
}