Android 尝试进行接口类型的成员注入时,匕首2 NPE

Android 尝试进行接口类型的成员注入时,匕首2 NPE,android,dagger-2,Android,Dagger 2,我对成员注入接口类型有问题 下面是一个例子: 我有一个接口,我们称之为BookActivity interface BookActivity {} 它是一个简单的标记接口,什么都不做 我有两个实施方案: BookNewActivity: Activity, BookActivity { @Inject someField: SomeField; override fonCreate(savedInstanceState:Bundle?) { activity

我对成员注入接口类型有问题

下面是一个例子: 我有一个接口,我们称之为BookActivity

interface BookActivity {}
它是一个简单的标记接口,什么都不做

我有两个实施方案:

BookNewActivity: Activity, BookActivity {

    @Inject someField: SomeField;

    override fonCreate(savedInstanceState:Bundle?) {
        activityComponent.inject(this)
    }

}

BookOldActivity: Activity, BookActivity {
    @Inject someField: SomeField;

override fonCreate(savedInstanceState:Bundle?) {
        activityComponent.inject(this)
    }
}

interface ActivityComponent {
    fun inject(BookActivity)
}
当我试图访问someField时,我得到了NPE,因为dagger并没有在我的类中注入someField。
如何解决此问题?

不确定,但这可能是dagger理解父接口的问题。您可以尝试为每个活动使用2个注入方法


如果一个接口可以有属性,您可以在那里拥有它,但这是不可能的:(

不确定,但这可能是dagger理解父接口的问题。您可以尝试为每个活动使用两种注入方法


如果一个接口可以有属性,你可以把它放在那里,但这是不可能的:(

你能添加一个堆栈跟踪吗。它发生在运行时吗?你是如何调用inject的(举个例子)?@Ruokki是的。它发生在运行时。我刚刚更新了一个问题,说明我如何调用Injector和堆栈跟踪,以知道NPE在哪里:)你能添加堆栈跟踪吗?它是在运行时发生的吗?你是如何调用Injection的(显示一个示例)?@Ruokki是的。它是在运行时发生的。我刚刚更新了一个问题,说明我如何调用Injector和堆栈跟踪,以了解NPE的位置:)