是否可以将一个视图模型用于多个活动



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

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

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

此外,此方法还可以帮助您实现宽屏的主从模型。

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

相关内容

  • 没有找到相关文章