В моем приложении для Android у меня проблема с Dagger 2. У меня есть модуль, который содержит 3 зависимости, две из которых вводятся в активность, но не третья.
@Module
class MyNumberWriterModule(_type: Boolean) {
private val type = _type
@Provides
@Singleton
fun provideSimpleNumberWriter(): SimpleNumberWriter {
return if (type) BelgianSimpleNumberWriter() else FrenchSimpleNumberWriter()
}
@Provides
@Singleton
fun provideIntegerNumberWriter(simpleNumberWriter: SimpleNumberWriter): IntWriter {
return IntegerNumberWriter(simpleNumberWriter)
}
@Provides
@Singleton
fun provideDecimalNumberWriter(intWriter: IntWriter): NumberWriter {
return DoubleNumberWriter(intWriter)
}
}
А вот и компонент
@Singleton
@Component(modules = [(MyNumberWriterModule::class)])
internal interface MyNumberWriterComponent {
fun inject(mainActivity: MainActivity)
// fun inject(baseActivity: _BaseActivity)
}
Моя деятельность
class MainActivity : _BaseActivity() {
@Inject
lateinit var numberWriter: IntWriter
@Inject
lateinit var numberWriter2: NumberWriter
private lateinit var binding: ActivityMainBinding
override fun onCreate(savedInstanceState: Bundle?) {
DaggerMyNumberWriterComponent.builder()
.myNumberWriterModule(MyNumberWriterModule(true))
.build()
.inject(this)
// Here numberWriter is injected
// Here numberWriter2 is NOT injected
}
}
Есть идеи, почему третий @Provides
не может быть введен?Я не вижу сообщений об ошибках, но в модуле Android Studio видно, что provideDecimalNumberWriter
никогда не используется.Нет ошибок при запуске проекта