对调用两次的片段使用视图模型
Use viewmodel for a fragment called twice
我有一个导航如下:
FragmentList -> FragmentDetailA -> FragmentDetailB -> FragmentDetailC
我为细节使用 viewModel FragmentDetailViewModel
private val detailViewModel: DetailViewModel by activityViewModels()
但是如果我向前走,然后再向后走,上面的fragmentDetails就变了。如何在不更改其他片段的情况下将视图模型分配给片段?
解法:
首先,将 activityViewModels() 更改为 viewModels()
然后,问题出在setFragmentResultListener。它在实例化新片段之前被调用,然后调用是在片段 A 而不是片段 B 上进行的。我决定使用 Bundle 对象在目的地之间传递数据。
非常感谢
听起来您想 link 视图模型到片段。
ViewModelProvider(this,viewModelFactory).get(MyViewModel.class)
通过这种方式初始化视图模型,视图模型依赖于父视图模型activity你必须使用这种方式
private val detailViewModel: DetailViewModel by viewModels()
您的视图模型实例取决于您的片段实例。
我有一个导航如下:
FragmentList -> FragmentDetailA -> FragmentDetailB -> FragmentDetailC
我为细节使用 viewModel FragmentDetailViewModel
private val detailViewModel: DetailViewModel by activityViewModels()
但是如果我向前走,然后再向后走,上面的fragmentDetails就变了。如何在不更改其他片段的情况下将视图模型分配给片段?
解法:
首先,将 activityViewModels() 更改为 viewModels()
然后,问题出在setFragmentResultListener。它在实例化新片段之前被调用,然后调用是在片段 A 而不是片段 B 上进行的。我决定使用 Bundle 对象在目的地之间传递数据。
非常感谢
听起来您想 link 视图模型到片段。
ViewModelProvider(this,viewModelFactory).get(MyViewModel.class)
通过这种方式初始化视图模型,视图模型依赖于父视图模型activity你必须使用这种方式
private val detailViewModel: DetailViewModel by viewModels()
您的视图模型实例取决于您的片段实例。