【Android,Kotlin】ViewModelProviders‘ is deprecated. Deprecated in Java

seuleyang

关注

阅读 87

2022-06-23


ViewModelProviders' is deprecated. Deprecated in Java,关于ViewModelProviders在新版本弃用的问题

今天在使用lazy懒加载获取PlaceViewModel实例的时候,竟然发现ViewModelProviders被官方弃用了,好家伙,如下图
【Android,Kotlin】ViewModelProviders‘ is deprecated. Deprecated in Java_解决方案
看来这么写是不行了,有没有替代的解决方案呢

  • 翻阅网上的内容还是采用掉包的方式拉回弃用的包,或者以new的形式,显然是不适用的
val viewModel by lazy { ViewModelProviders.of(this).get(PlaceViewModel::class.java) }

直到我找到了这篇帖子
【Android,Kotlin】ViewModelProviders‘ is deprecated. Deprecated in Java_kotlin_02

  • 帖子传送门stack overflow:​​Kotlin does not understand ViewModelProviders.of(activity ?: fragment)​​
  • 如果你正在使用Androidx,所以应该添加两条线的生命周期:


解决方案

  • get it!

//原语句
​​​val viewModel by lazy { ViewModelProviders.of(this).get(PlaceViewModel::class.java) }​​ 改为

val viewModel1 by lazy { ViewModelProvider(this).get(PlaceViewModel::class.java) }


精彩评论(0)

0 0 举报