我正在尝试使用访问ParentViewModelfor 。这是我的代码。ParentFragmentChildFragmentviewModels
// In ParentFragment
class ParentFragment : Fragment() {
val parentViewModel: ParentViewModel by viewModels {
ParentViewModelFactory(getRepository())
}
...
}
// In ChildFragment
class ChildFragment : Fragment() {
val parentViewModel: ParentViewModel by viewModels(
{ requireParentFragment() }
)
...
}
Run Code Online (Sandbox Code Playgroud)
但是,此代码仅LiveData在我设置变量ParentViewModel并ParentFragment像这样观察它时才有效:
parentViewModel.text.observe(this) {
toast(it)
}
Run Code Online (Sandbox Code Playgroud)
ViewModel我从内部观察是没有用的ParentFragment。我只需要它来lifecycle定义ChildFragments。
如果我摆脱上面的观察,我会得到这个错误:
'java.lang.RuntimeException:无法创建类 ParentViewModel 的实例'如何让 ChildFragments 访问
ParentViewModel而不设置虚拟实时数据对象,以便ParentFragment可以观察它们。