【发布时间】:2019-07-03 11:48:21
【问题描述】:
如何在没有活动的情况下将共享 viewModel 与片段一起使用? 就像在代码中一样,但使用 ParentFragment 代替 requireActivity()。在这种情况下,当 ParentFragment 将被销毁时,SharedViewModel 被清除,但是当我从活动中提供 SharedViewModel 时,ParentFragment 被销毁时它不会被清除。
而且我使用导航组件,这意味着我不能为片段设置标签,然后使用 findFragmentByTag()
class ParentFragment:Fragment{
override fun onCreate(savedInstanceState: Bundle?) {
var viewModel = ViewModelProviders.of(requireActivity()).get(SharedViewModel::class)
}
}
class ChildFragment:Fragmnet{
override fun onCreate(savedInstanceState: Bundle?) {
var viewModel = ViewModelProviders.of(requireActivity()).get(SharedViewModel::class)
}
}
【问题讨论】:
-
您是否尝试过在
ChildFragment类中使用parentFragment代替requireActivity()? -
@djhs16 不,我不知道如何从
ChildFragment访问ParentFragment。我不知道如何在FragmentManager中找到ParentFragment -
你试过
fragment.getParentFragment()吗? -
@EpicPandaForce
ParentFragment是错误的。因为它是包含当前片段的片段,而不是以前从当前添加到片段管理器的片段。
标签: android viewmodel android-architecture-components