是否可以将一个ViewModel用于多个活动?

问题描述 投票:1回答:1

我正在构建一个工作管理应用程序并尝试实现Android架构组件。我有一个活动用于查看有关任务的详细信息,然后有多个活动来编辑该任务。由于所有这些活动中的所有数据都是相同的,并且这些活动将经常使用相同的数据一个接一个地打开,我可以为所有这些数据共享一个ViewModel,还是应该为所有这些创建单独的ViewModel ?谢谢! :)

android viewmodel android-architecture-components
1个回答
0
投票

您可以对片段使用活动的共享视图模型。例如,你有ItemActivity,它主持ItemFragment项目预览和ItemEditFragment进行编辑。您可以在onCreate()片段回调中获取活动级视图模型:

override fun onCreate(savedInstanceState: Bundle?) {
    super.onCreate(savedInstanceState)
    val vm = activity?.run {
        ViewModelProviders.of(this).get(ItemViewModel::class.java)
    } ?: throw Exception("Invalid Activity")
}

更重要的是,这种方法可以帮助你implement master-detail model宽屏幕。

您应该注意,不同类型视图的单一视图模型(例如预览,编辑)可能比每个视图的独立视图模型更难维护。

© www.soinside.com 2019 - 2024. All rights reserved.