Я создаю библиотеку для своего приложения, и в этой библиотеке я хочу использовать dagger2, так как может быть только один класс приложения, поэтому у меня нет класса приложения в моей библиотеке, так что мне пришла в голову очевидная вещь должен был инициализировать кинжал на уровне активности, но я также хочу использовать кинжал android. Это то, чего я добился до сих пор, я инициализировал кинжал, но не смог использовать кинжал android.
Singleton
@Component(modules = [NetworkModule::class,
MyModule::class], dependencies = [Dependency::class])
internal interface ActivityComponent {
fun inject(activity: MyActivity)
}
Мой класс инжекторов
internal class Injector {
companion object {
private var deps: Dependency? = null
fun inject(activity: MyActivity) {
component = ActivityComponent
.builder()
.dependency(deps)
.build()
component.inject(activity)
}
fun setDependency(dependency: Dependency) {
this.deps = dependency
}
}
}
MyActivity.class
class MyActivity:AppCompatActivity{
override fun onCreate(savedInstanceState: Bundle?) {
super.onCreate(savedInstanceState)
Injector.inject(this)
}
}
Это отлично работает, но как использовать кинжал android? Потому что для использования кинжала android вам нужно инициализировать DaggerAppComponent в классе приложения, а у меня его нет.