- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
我正在尝试使用 viewModels
从 ChildFragment
访问 ParentFragment
的 ParentViewModel
。这是我的代码。
// 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
。我只需要它来定义 ChildFragments
的 lifecycle
。
如果我摆脱上面的观察我得到这个错误:
'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/
我有HomeActivity在 viewpager 中包含许多 fragment 。现在我有 2 个 fragment AddBalanceFragment AddSubscriptionFragme
我不知道这是否是重复的问题,但我没有找到任何解决方案。 问题是,有一个屏幕在所有屏幕中具有相似的 View ,屏幕是 fragment 化的。 所以,我想创建一个基础 fragment ,并想在所有子
我有一个 Activity ,我用一个按钮在两个 fragment (主要和设置)之间切换。在 MAIN fragment 中,我有一个包含 4 个子 fragment 的 ViewPager。 起初
我有一个基本上只包含底部导航和 View 模型的 fragment 。此 View 模型由该 fragment 中的所有子 fragment 共享。我的 parentfragment 看起来有点像这样
我正在尝试使用 viewModels 从 ChildFragment 访问 ParentFragment 的 ParentViewModel。这是我的代码。 // In ParentFragment
我正在尝试使用 viewModels 从 ChildFragment 访问 ParentFragment 的 ParentViewModel。这是我的代码。 // In ParentFragment
我是一名优秀的程序员,十分优秀!