作者:天使的眼泪174 | 来源:互联网 | 2023-02-03 14:21
我尝试使用迄今为止有效的新Dagger Android注塑产品.
现在我想扩展到我的需求.
在我的MainActivityModule
我添加了一个TestModule
:
@Module
abstract class MainActivityModule {
@ActivityScope
@ContributesAndroidInjector(modules = arrayOf(TestModule::class))
internal abstract fun contributeMainActivityInjector(): MainActivity
}
这TestModule
很简单:
@Module
internal abstract class TestModule {
@Provides
internal fun provideTest(): String {
return "foo bar"
}
}
但我得到这个错误: TestModule must be set
我查看了生成的源代码,但无法找到提示我必须做什么.我也在谷歌搜索过这个,但发现只有简单的例子:-(
我忘记了什么?你可以在GitHub找到完整的应用程序.
编辑
正如杰夫鲍曼所说,provideTest()
需要保持不变.当我创建这样的Java类时:
@Module
public class TestModule {
@Provides
static String provide() {
return "foo bar";
}
}
有用.
所以最后一个问题:如何在Kotlin制作这个?这不起作用:
@Module
internal abstract class TestModule {
companion object {
@Provides
@JvmStatic
internal fun provideTest(): String {
return "foo bar"
}
}
}
所以我需要另一种方法来创建一个静态方法.
1> Ralph Bergma..:
是的,我找到了解决方案:-)
获取static
方法的Kotlin 方法是将方法放入a companion object
但现在Dagger抛出一个@Provides
只能在a中使用的错误@Module
.为了解决这个问题我注释的companion object
太
@Module
internal abstract class TestModule {
@Module
companion object {
@Provides
@JvmStatic
internal fun provideTest(): String {
return "foo bar"
}
}
}