これまでに動作する新しいDagger Android injection thingを使用しようとしています。モジュールを設定する必要があります
今、私は自分のニーズにそれを広げたいと思います。私MainActivityModule
で
私はTestModule
を追加しました:
@Module
internal abstract class TestModule {
@Provides
internal fun provideTest(): String {
return "foo bar"
}
}
しかし、私はこのエラーを取得する:
@Module
abstract class MainActivityModule {
@ActivityScope
@ContributesAndroidInjector(modules = arrayOf(TestModule::class))
internal abstract fun contributeMainActivityInjector(): MainActivity
}
TestModule
は本当に簡単ですTestModule must be set
私は生成されたソースコードに見えました私は何をしなければならないかのヒントを見つけることができません。私はあなたがGitHubで完全なアプリを見つけることができますか?あまりにもグーグルで、この検索が、
、私は忘れてしまった何:-(だけの簡単な例を見つけました。
を編集
ジェフ・ボウマンとしてprovideTest()
をサイード静的である必要があります私はこのようなJavaクラスを作成する場合:。
@Module
public class TestModule {
@Provides
static String provide() {
return "foo bar";
}
}
それが動作
。最終的な質問:コトルでこれを作る方法?これは動作しません:
@Module
internal abstract class TestModule {
companion object {
@Provides
@JvmStatic
internal fun provideTest(): String {
return "foo bar"
}
}
}
私は静的メソッドを作成する別の方法が必要です。
Javaでは、 '@ Provides'メソッドが静的であると期待します。つまり、' TestModule'インスタンスを使用しないことを意味します。しかし、[Kotlinはそのような静的メソッドをサポートしていません](https://kotlinlang.org/docs/reference/classes.html#companion-objects)。私は本当の答えを提供するためにKotlinにはあまりよく慣れていませんが、 'provideTest'は静的ではないので、Daggerはインスタンスを必要とし、パブリックの引数のないコンストラクタを使ってTestModuleをインスタンス化できるとは思われません。 –