Кинжал @ Предоставляет в Kotlin - PullRequest
0 голосов
/ 25 марта 2020

Я пытаюсь понять Кинжал. Я создал класс 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?

...