我正试图访问 ParentViewModel
对于 ParentFragment
从 ChildFragment
使用 viewModels
. 这是我的代码。
// In ParentFragment
class ParentFragment : Fragment() {
val parentViewModel: ParentViewModel by viewModels {
ParentViewModelFactory(getRepository())
}
...
}
// In ChildFragment
class ChildFragment : Fragment() {
val parentViewModel: ParentViewModel by viewModels(
{ requireParentFragment() }
)
...
}
然而,这段代码只有在我设置了一个 LiveData
中的变量 ParentViewModel
并有 ParentFragment
这样观察它。
parentViewModel.text.observe(this) {
toast(it)
}
我没有必要去观察 ViewModel
从内部 ParentFragment
. 我只需要它来定义 lifecycle
对于 ChildFragments
.
如果我摆脱了上面的观察,我得到了这个错误。
'java.lang.RuntimeException: Cannot create an instance of class ParentViewModel' '。我怎样才能让ChildFragments访问到
ParentViewModel
而不需要设置虚拟的实时数据对象,这样一来,作为 ParentFragment
可以观察它们。 在ChildFragment中,你应该在初始化时传递工厂。试试这个
class ChildFragment : Fragment() {
val parentViewModel: ParentViewModel by viewModels(
{ requireParentFragment() }
) { ParentViewModelFactory(getRepository()) }
...
}