【发布时间】:2020-03-31 16:56:04
【问题描述】:
我有两个片段应该共享一个视图模型
class FragmentA(): Fragment() {
val sharedViewModel = ViewModelProvider.(need_a_shared_context)....//not the activity context
}
class FragmentB(): Fragment() {
val sharedViewModel = ViewModelProvider.(need_a_shared_context).... //not the activity context
}
现在,在每个片段中,我需要访问共享视图模型,而不是包含这些片段的活动托管的共享视图模型,因为我正在使用 Firebase,并且我有一个侦听器将数据发送到我的应用程序。
所以,如果我将视图模型附加到活动生命周期,我可以在这两者之间共享数据,但是,当我不在 FragmentA() 或 FragmentB() 时,它也会监听数据
当我只在 FragmentA() 或 FragmentB() 时,有没有办法确定这个 sharedviewmodel 的创建范围?
编辑
由于我使用的是 NavigationComponents,当我从 FragmentA() 导航到 FragmentB() 时,片段 A 会死掉,所以,如果我在那里创建我的 sharedviewmodel,它会在我访问 FragmentB() 和 FragmentB() 时死掉视图模型的新实例。
【问题讨论】:
标签: android firebase android-fragments android-navigation android-architecture-navigation