请稍等 ...
×

采纳答案成功!

向帮助你的同学说点啥吧!感谢那些助人为乐的人

跨页面共享ViewModel无效

架构课上老师这种写法,我写代码模拟了一下无效,两个页面打印的ViewModel内存地址是不一样的

//让Application实现ViewModelStoreOwner 接口
class MyApp: Application(), ViewModelStoreOwner {
    private val appViewModelStore: ViewModelStore by lazy {
        ViewModelStore()
    }

    override fun getViewModelStore(): ViewModelStore {
        return appViewModelStore
    }
}

val viewmodel = ViewProvider(application).get(HiViewModel::class.java)

如果想定义一个app 全局共享的ViewModel,该怎么实现呢??

正在回答

3回答

你用的lifescycle-viewmodel依赖库是哪个版本呢?

可以断点跟进到ViewModelProvider的get方法,断点一看便知哈

0 回复 有任何疑惑可以回复我~
  • 提问者 默小铭 #1
    用的最新的版本,2.3.1的,我断点再测试测试
    回复 有任何疑惑可以回复我~ 2022-02-11 17:30:29
  • 提问者 默小铭 #2
    非常感谢!
    回复 有任何疑惑可以回复我~ 2022-02-14 10:37:41
提问者 默小铭 2022-02-14 10:37:28

经老师指点,改称这样就可以了

mViewModel = ViewModelProvider(
    MyApplicationViewModelProvider.AndroidViewModelFactory.getInstance()
).get(CounterViewModel::.)


0 回复 有任何疑惑可以回复我~
LovelyChubby 2022-02-11 17:24:31

只有一个原因就是viewmodelStore两次不是同一个对象

0 回复 有任何疑惑可以回复我~
问题已解决,确定采纳
还有疑问,暂不采纳
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号