Диспетчер Dagger 2 для Android - PullRequest
0 голосов
/ 08 марта 2019

Я пытаюсь использовать новый dagger api для ввода активности, но получаю сообщение об ошибке lateinit property dispatchingAndroidInjector has not been initialized

// AppComponent.kt
@Singleton
@Component(modules = [
    AndroidSupportInjectionModule::class,
    ActivitiesModule::class
])
interface AppComponent {
    fun inject(app: Application)

    @Component.Builder
    interface Builder {

        fun build(): AppComponent

        @BindsInstance
        fun bindApplication(application: Application): Builder
    }
}

Файл модулей активности

@Module
abstract class ActivitiesModule {

    @ContributesAndroidInjector
    abstract fun provideRestaurantMainActivity(): MainActivity
}

В моем MainActivity я звонювпрыск

class MainActivity : AppCompatActivity() {

    override fun onCreate(savedInstanceState: Bundle?) {
        AndroidInjection.inject(this)
        super.onCreate(savedInstanceState)
        setContentView(R.layout.activity_main)
    }
}

А в моем приложении

class App : Application(), HasActivityInjector{

@Inject
lateinit var dispatchingAndroidInjector: DispatchingAndroidInjector<Activity>
override fun activityInjector(): AndroidInjector<Activity> = dispatchingAndroidInjector

override fun onCreate() {
    super.onCreate()
    DaggerAppComponent
            .builder()
            .bindApplication(this)
            .build()
            .inject(this)
}

}

Есть ли что-то еще, чего мне не хватает в подключении модулей и компонентов?

Ответы [ 2 ]

1 голос
/ 08 марта 2019

Это "забавный впрыск (приложение: приложение)" должно быть

забавный впрыск (приложение: приложение)

0 голосов
/ 08 марта 2019

Я думаю, что вы используете неправильные версии AndroidInjection и AndroidSupportInjectionModule.

Попробуйте заменить AndroidSupportInjectionModule::class с AndroidInjectionModule::class.

...