相关疑难解决方法(0)

使用 viewModel 从 ChildFragment 访问 ParentFragment 中的 ViewModel

我正在尝试使用访问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在我设置变量ParentViewModelParentFragment像这样观察它时才有效:

parentViewModel.text.observe(this) {
    toast(it)
}
Run Code Online (Sandbox Code Playgroud)

ViewModel我从内部观察是没有用的ParentFragment。我只需要它来lifecycle定义ChildFragments

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

'java.lang.RuntimeException:无法创建类 ParentViewModel 的实例'
如何让 ChildFragments 访问ParentViewModel而不设置虚拟实时数据对象,以便ParentFragment可以观察它们。

java android android-lifecycle kotlin

2
推荐指数
1
解决办法
1088
查看次数

标签 统计

android ×1

android-lifecycle ×1

java ×1

kotlin ×1