【发布时间】:2021-01-04 05:22:29
【问题描述】:
我有 1 个包含父片段的活动。父片段内部是 2 个子片段。我只想创建一个视图模型实例并在两个子片段中使用它。
这是我在父片段中的代码:
val factory = ViewModelFactory.getInstance(requireContext())
viewModel = ViewModelProvider(this, factory)[FavoriteViewModel::class.java]
这个在子片段中:
viewModel = (requireParentFragment() as FavoriteParentFragment).viewModel // force close
它在 logcat 中强制关闭而不会出错。
当我尝试将父片段的代码移动到活动中(不更改代码)并将子片段的代码更改为:
viewModel = (activity as MainActivity).viewModel // works
有效。
那么是否可以做第一种方法(即强制关闭)?如果是这样,如何正确地做到这一点以及为什么我没有收到任何 logcat 错误。
【问题讨论】:
-
评论这行后可以试试吗?以确保导致崩溃
标签: android android-fragments viewmodel