Я пытаюсь понять Кинжал. Я создал класс applicationInjector:
class BaseApplication : DaggerApplication() {
override fun applicationInjector(): AndroidInjector<out DaggerApplication>? {
return DaggerAppComponent.builder().application(this)?.build()
}
}
И вот мой AppComponent
@Component(
modules = [AndroidSupportInjectionModule::class,
ActivityBuilderModules::class]
)
interface AppComponent : AndroidInjector<BaseApplication> {
@Component.Builder
interface Builder {
@BindsInstance
fun application(application: Application?): Builder?
fun build(): AppComponent?
}
}
Теперь я хочу ввести простую строку в действие (на самом деле basi c, верно?)
В Java это работает так:
@Module
abstract class ActivityBuilderModules {
@ContributesAndroidInjector
abstract fun contributeAuthActivity() : AuthActivity
//JAVA
@Provides
public static String provideTestString() {
return "TEST "
}
однако у нас нет функции stati c в Kotlin, верно? И это должно быть stati c, потому что я получаю сообщение об ошибке:
error: com.example.kotlintests.di.ActivityBuilderModules is abstract and has instance @Provides methods. Consider making the methods static or including a non-abstract subclass of the module instead.
public abstract interface AppComponent extends dagger.android.AndroidInjector<com.example.kotlintests.BaseApplication> {
Я пробовал с функцией уровня пакета, но она не работала. Как добавить функцию provideTestString в Kotlin?