Hir*_*eri 3 android kotlin android-livedata android-viewmodel
在Kotlin我正在使用
viewModel = ViewModelProviders.of(this).get(HomeViewModel::class.java)
Run Code Online (Sandbox Code Playgroud)
从提供程序检索ViewModel.
在我的ViewModel中我有这样的东西.
val liveChuchuData = MutableLiveData<DataChuchu>()
Run Code Online (Sandbox Code Playgroud)
根据我的理解,这会创建MutableLiveData的最终新变量吗?
我记得在Java中的ViewModel中声明MutableLiveDatas时,我们创建了一个函数,然后检查MutableLiveData是否为null,只创建一次.那么如果我有一个片段也会使用相同的ViewModel实例呢?
val liveChuchuData = MutableLiveData<DataChuchu>()
Run Code Online (Sandbox Code Playgroud)
一旦在片段中调用,该行是否会导致重置当前数据?
取决于ViewModel的父级是什么.如果父母是Acivity和你的Fragment,你初始化ViewModel用getActivity()的,而不是通过这个,那么你将重复使用ViewModel,但例如,如果您有两个单独的Fragments用于初始化同样ViewModel通过传递这给ViewModelProvider那么你ViewModel将有两个单独的实例,并在其中不同的数据.
要ViewModel在两个中包含相同的数据Fragments,您需要在创建实例时传递getActivity();给它.ViewModelProviderViewModel
这就是说,YES,它会导致如果你使用你的数据重置此创建时ViewModel.
希望这可以帮助.祝好运 :)
| 归档时间: |
|
| 查看次数: |
1467 次 |
| 最近记录: |