如何使用 ViewModel(s) 在片段之间传递数据?
How to pass data between fragments using ViewModel(s)?
我在每个屏幕上使用 Koin 和 Fragment + ViewModel。
在我的 HomeFragment 中,我列出了 post。
当用户选择 post 时,我将用户导航到 PosDetailsFragment 并且我想显示有关 post.
的信息
class HomeFragment : Fragment() {
private val homeViewModel by viewModel<HomeViewModel>()
//when user select post I set that value to LeadViewModel (I want to make that viewModel as common for some fragment)
leadViewModel.state.selectedPost.value = action.post
}
class PostDetailsFragment : Fragment() {
private val leadViewModel by sharedViewModel<LeadViewModel>()
//always null
val post = leadViewModel.state.selectedPost.value
}
我的 Koin 模块:
viewModel { LeadViewModel() }
viewModel { HomeViewModel(get(bottomNavigationCommander), get()) }
viewModel { AddPostViewModel() }
怎么了?看起来 PostDetailsFragment 中的 LeadViewModel 实例与 HomeFragment 中的完全不同?
尝试将 val 作为支持字段
val post
get() = leadViewModel.state.selectedPost.value
我在每个屏幕上使用 Koin 和 Fragment + ViewModel。 在我的 HomeFragment 中,我列出了 post。 当用户选择 post 时,我将用户导航到 PosDetailsFragment 并且我想显示有关 post.
的信息class HomeFragment : Fragment() {
private val homeViewModel by viewModel<HomeViewModel>()
//when user select post I set that value to LeadViewModel (I want to make that viewModel as common for some fragment)
leadViewModel.state.selectedPost.value = action.post
}
class PostDetailsFragment : Fragment() {
private val leadViewModel by sharedViewModel<LeadViewModel>()
//always null
val post = leadViewModel.state.selectedPost.value
}
我的 Koin 模块:
viewModel { LeadViewModel() }
viewModel { HomeViewModel(get(bottomNavigationCommander), get()) }
viewModel { AddPostViewModel() }
怎么了?看起来 PostDetailsFragment 中的 LeadViewModel 实例与 HomeFragment 中的完全不同?
尝试将 val 作为支持字段
val post
get() = leadViewModel.state.selectedPost.value