【问题标题】:How to use same instance of ViewModel in activity as well as fragment?如何在活动和片段中使用相同的 ViewModel 实例?
【发布时间】:2020-06-23 17:11:58
【问题描述】:

我在 MainActivity 中创建了一个 ViewModel 实例并设置了一个观察者。我希望将观察到的数据放入 MainActivity 的 ViewPager 的片段之一。如何将所需的 LiveData 放入 fragment

【问题讨论】:

    标签: android mvvm viewmodel


    【解决方案1】:

    使用 AndroidX 扩展委托

    在 MainActivity 中:

    private val activityViewModel: SomeViewModel by viewModels()
    

    在片段中

    private val activityViewModel: SomeViewModel by activityViewModels()
    

    使用 ViewModelFactory,将 ViewModelFactory 实例放入闭包

    private val activityViewModel: SomeViewModel by viewModels{ viewModelFactory }
    private val activityViewModel: SomeViewModel by activityViewModels{ viewModelFactory}
    

    【讨论】:

      【解决方案2】:

      您可以使用共享的 ViewModel Shared ViewModel between activity and fragments

      为此,您可以在片段中从活动的 viewModel 中定义一个对象,并将活动作为 viewModel 的所有者,并对其变量应用更改。

      【讨论】:

        猜你喜欢
        • 2018-11-05
        • 1970-01-01
        • 1970-01-01
        • 2018-04-10
        • 1970-01-01
        • 2019-08-04
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多