我使用dagger2
时遇到问题我创建了Component,Module,Provide
class testModule {
@Provides @Singleton
fun provideTestServer(): TestService {
}
}
我在MainActivity中调用onCreate()
DaggerImageComponent.builder().build().inject(this)
这是我的问题 DI在MainActivity中工作正常
class MainActivity: AppCompatActivity {
@Inject
lateinit var testService: TestService
}
但其他文件无效。
object TestObject {
@Inject
@JvmSynthetic // error: static field cannot inject
lateinit var testService: TestService
fun test() = testService.testfun()
}
或
@Singleton
class TestClass {
@Inject
lateinit var testService: TestService
fun test() = testService.testfun()
}
TestClass和TestObject获取错误 - lateinit属性testInterface尚未初始化
我不明白为什么在TestClass,TestObject中出现错误。
答案 0 :(得分:1)
你应该在你想要注入变量的类中调用“inject”。 你是为MainActivity做的,但你也应该在其他类中注入你的组件。顺便说一下,你有TestClass,似乎你也在注入的客户端代码中使用它,因为它有“Singleton”注释。如果确实如此 - 您只需在模块中为其添加提供程序并将服务作为构造函数参数传递:
Rows
3
4
6
11
然后,你的TestClass应该有构造函数:
(defun caesar (s n)
(with-output-to-string (cipher)
(labels ((beef (s)
(when s
(princ <whatever> cipher)
(beef (rest s)))))
(beef (coerce s 'list)))))
我建议你再次阅读有关匕首的信息,请查看本教程: http://www.vogella.com/tutorials/Dagger/article.html