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();
给它.ViewModelProvider
ViewModel
这就是说,YES,它会导致如果你使用你的数据重置此创建时ViewModel
.
希望这可以帮助.祝好运 :)
归档时间: |
|
查看次数: |
1467 次 |
最近记录: |