Dagger2尚未初始化Lateinit属性



我是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代码

@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.nitializatializationpropertyaccessexception:lateinit属性活动尚未初始化 atrg.ottochamo.pruebadagger.pruebadagger.activityInjector(pruebadaggerapp.kt:28( 在Dagger.Android.androidIndoction。 在Dagger.android.support.DaggerAppCompatactivity.oncreate(DaggerappCompatactivity.java:43( atrg.ottochamo.pruebadagger.mainactivity.oncreate(MainActivity.kt:14( 在android.app.activity.performcreate(activity.java:6980( 在android.app.instrumentation.callactivityoncreate(instrumentation.java:1214( at android.app.activitythread.performlaunchactivity(activityThread.java:2828(

我一直在关注很多文章,但我无法使它起作用。感谢您的帮助

您正在做:

    DaggerAppComponent.builder().build().inject(this)

,但是您不为appModule提供appContext,这是构造函数中所需的:

class AppModule(val app: PruebaDaggerApp) {}

因此,您应该创建您的AppComponent,例如:

    DaggerAppComponent.builder().appModule(AppModule(this)).build().inject(this)

我的问题是我请求注入Application,而不是我的类PruebaDaggerApp,然后修复它:(

相关内容

  • 没有找到相关文章

最新更新