#概要
Kotlin で dagger2を試している時に
UninitializedPropertyAccessException: lateinit property hogeViewModel has not been initialized
が発生。他のActivityではできるのになぜ?ってなったので備忘録
#原因
他のActivityではDaggerAppCompatActivityを継承しているのに
AppCompatActivityを継承してた。。。
という初歩的なミス
#別の解決法
activity.kt
class HogeActivity : AppCompatActivity() {
@Inject
lateinit var hogeViewModel: HogeViewModel
override fun onCreate(savedInstanceState: Bundle?) {
AndroidInjection.inject(this)//←追加
super.onCreate(savedInstanceState)
setContentView(R.layout.activity_hoge)
hogeViewModel.getHogeFromApi~~~//以下略
}
}
DaggerAppCompatActivityはAndroidInjection.inject(this)をonCreateでやってくれているBaseクラスなので、AppCompatActivityを継承したクラスのonCreateでAndroidInjection.inject(this)を追加しても解決します。
まだまだ、DIの勉強不足が否めない。