gpt4 book ai didi

android - 必须设置模块

转载 作者:塔克拉玛干 更新时间:2023-11-03 00:44:39 24 4
gpt4 key购买 nike

我尝试使用新的 Dagger Android injection thing到目前为止有效。

现在我想扩展它以满足我的需要。

在我的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

我查看了生成的源代码,但找不到我必须做什么的提示。我也在谷歌上搜索过这个,但只找到了简单的例子:-(

我忘记了什么?您可以在 GitHub 找到完整的应用程序.

编辑

正如 Jeff Bowman 所说,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"
}
}
}

所以我需要另一种方法来创建静态方法。

最佳答案

是的,我找到了解决方案:-)

Kotlin 获取 static 方法的方法是将方法放在 companion object 中,但现在 Dagger 抛出一个错误,@Provides 只能在 @Module 中使用。为了解决这个问题,我也对 companion object 进行了注释

@Module
internal abstract class TestModule {

@Module
companion object {

@Provides
@JvmStatic
internal fun provideTest(): String {
return "foo bar"
}
}
}

关于android - 必须设置模块,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44075860/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com