0

我正在练习 Google MVVM https://github.com/googlesamples/android-architecture/tree/todo-mvvm-databinding,在链接 Fragment 和 ViewModel 时遇到问题。

谷歌演示是这样的:

在活动中,

  1. Fragment.newInstance()
  2. new ViewModel()
  3. fragment.setViewModel(viewModel). (Implementing a setViewModel method in Fragment)
  4. viewmodel.loadingData() in fragment's onResume or onStart

我的问题是,这似乎不安全。如果由于某种原因,系统回收片段并使用默认构造函数重新创建,viewModel将是 null 吗?

我是对的还是我错过了什么?

作为一种解决方法,我认为ViewModel()在 Fragment 的onCreateView方法中添加新的应该没问题?

4

1 回答 1

1

您不应在Fragment或中的任何位置创建 ViewModel 的新实例Activity。正确的方法是使用ViewModelProvidersand获取实例ViewModelProvider.Factory

网上有很多关于MVVMViewModel使用dagger2诸如thisthis之类的文章

于 2018-08-14T04:50:28.063 回答