在三个片段之间共享ViewModel

时间:2020-05-16 20:12:20

标签: java android android-fragments kotlin android-viewmodel

我有三个片段A,B和C。B和C是A的子片段。我如何使所有三个片段共享同一视图模型。 从this的中篇文章中,我应该这样做:


viewModel = activity?.run {
        ViewModelProviders.of(this)[SharedViewModel::class.java]
    } ?: throw Exception("Invalid Activity")       
}

但是,这是关于在两个片段和一个活动之间共享视图模型,因此在我的情况下无法正常工作。

1 个答案:

答案 0 :(得分:3)

您尝试过类似的方法吗?将视图模型注入到主根片段A中:

class FragmentA : Fragment() {

    val viewModel: SharedViewModel by viewModels()
}

现在您应该能够像这样从BC访问此视图模型:

class FragmentB : Fragment() {

    val viewModel: SharedViewModel by viewModels(
        ownerProducer = { this.requireParentFragment() }
    )
}