Я новичок в Android и пытаюсь создать приложение с шаблоном Dagger2 и MVVM и kotlin, но не могу его запустить.
Код класса моего приложения.
class PruebaDaggerApp: Application(), HasActivityInjector, HasSupportFragmentInjector {
@Inject
lateinit var activityInjector: DispatchingAndroidInjector<Activity>
@Inject
lateinit var fragmentInjector: DispatchingAndroidInjector<Fragment>
override fun onCreate() {
super.onCreate()
DaggerAppComponent.builder().build().inject(this)
}
override fun activityInjector(): AndroidInjector<Activity> = activityInjector
override fun supportFragmentInjector(): AndroidInjector<Fragment> = fragmentInjector
}
Мой AppComponent.
@Singleton
@Component(modules = [AndroidSupportInjectionModule::class, AppModule::class, ActivityModule::class])
interface AppComponent {
fun inject(app: Application)
}
Код действия ActivityModule
@Module
abstract class ActivityModule {
@ContributesAndroidInjector(modules = [FragmentModule::class])
abstract fun contributesMainActivity(): MainActivity
}
FragmentsModule code
@Module
abstract class FragmentModule {
@ContributesAndroidInjector
abstract fun contributesCardFrament(): CardFragment
}
Код AppModule
@Module(includes = [ViewModelModule::class])
class AppModule(val app: PruebaDaggerApp) {
@Provides
@Singleton
fun provideApplicationContext(): Context = app.applicationContext
}
ViewModelModule
@Module
abstract class ViewModelModule {
@Binds
abstract fun bindViewModelFactory(viewModelFactory: DaggerViewModelFactory): ViewModelProvider.Factory
@Binds
@IntoMap
@ViewModelKey(CardViewModel::class)
abstract fun bindCardViewModel(viewModel: CardViewModel): ViewModel
}
Вызывается: kotlin.UninitializedPropertyAccessException: свойство свойства lateinitInjector не было инициализировано в org.ottochamo.pruebadagger.PruebaDaggerApp.activityInger 28 (at).android.AndroidInjection.inject (AndroidInjection.java:56) в dagger.android.support.DaggerAppCompatActivity.onCreate (DaggerAppCompatActivity.java:43) в org.ottochamo.pruebadagger.MainActivity.onCreate (главная).Activity.performCreate (Activity.java:6980) в android.app.Instrumentation.callActivityOnCreate (Instrumentation.java:1214) в android.app.ActivityThread.performLaunchActivity (ActivityThread.java:2828)
Я читал много статей, но не могу заставить его работать.Буду очень признателен за вашу помощь