ViewModelProviders が deprecated になったので置き換えるときにハマったメモ【android】

viewModelを取得する際に、下記のように記述していましたが、いつの間にか非推奨になっていました。。。
情報が少なくて置き換える際にハマったのでメモです。

private val mViewModel: HogeViewModel by lazy {
  ViewModelProviders.of(this).get(HogeViewModel::class.java)
}
広告

対処方法1:ViewModelの場合

これでいいようです。

private val mViewModel: HogeViewModel by lazy {
  ViewModelProvider(
    this, 
    ViewModelProvider.NewInstanceFactory()
  ).get(HogeViewModel::class.java)
}

対処方法2:AndroidViewModelの場合

使用していたのがAndroidViewModelだったので、上記の方法ではエラー(java.lang.RuntimeException: Cannot create an instance of class)になってハマりました。

private val mViewModel: HogeViewModel by lazy {
  ViewModelProvider(
    this, 
    ViewModelProvider.AndroidViewModelFactory(application)
  ).get(HogeViewModel::class.java)
}

これで動くようになりました。

googleさんのスピードについていけない。

広告

シェアする

フォローする