gpt4 book ai didi

java - 使用 viewModels 从 ChildFragment 访问 ParentFragment 中的 ViewModel

转载 作者:行者123 更新时间:2023-12-02 16:39:06 26 4
gpt4 key购买 nike

我正在尝试使用 viewModelsChildFragment 访问 ParentFragmentParentViewModel。这是我的代码。


// In ParentFragment

class ParentFragment : Fragment() {
val parentViewModel: ParentViewModel by viewModels {
ParentViewModelFactory(getRepository())
}
...
}

// In ChildFragment

class ChildFragment : Fragment() {
val parentViewModel: ParentViewModel by viewModels(
{ requireParentFragment() }
)
...
}

但是,只有当我在 ParentViewModel 中设置一个 LiveData 变量并让 ParentFragment 像这样观察它时,这段代码才有效:

parentViewModel.text.observe(this) {
toast(it)
}

我无法从 ParentFragment 内部观察 ViewModel。我只需要它来定义 ChildFragmentslifecycle

如果我摆脱上面的观察我得到这个错误:

'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()) }
...
}

关于java - 使用 viewModels 从 ChildFragment 访问 ParentFragment 中的 ViewModel,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62040836/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com