【问题标题】:It is possible to call the method of my ViewModel inside my fragment and observe the MutableLiveData inside my activity? [duplicate]可以在我的片段中调用我的 ViewModel 的方法并观察我的活动中的 MutableLiveData 吗? [复制]
【发布时间】:2025-12-06 18:10:01
【问题描述】:

我有一个片段。当我单击一个按钮时,我想调用数据库来获取一些数据。我把这些数据放在一个可观察的实时数据中。该数据显示在活动上。我可以观察我活动中的数据吗?所以我想在我的片段中调用我的 ViewModel 的方法并观察我的活动中的 MutableLiveData。有可能吗?

【问题讨论】:

标签: android mvvm android-livedata android-fragmentactivity android-viewmodel


【解决方案1】:

是的,这绝对有可能。您需要做的就是在活动和片段之间共享您的视图模型实例。

怎么样?在片段中使用ViewModelProvider(),而不是将this 作为所有者传递,您需要从片段中传递activity 实例。如果您的片段已经在同一个活动上,那么它将为您提供活动的视图模型实例,而不是创建新的。

片段的实际语法:

ViewModelProvider(requireActivity())[MyViewModel::class.java]

使用 viewModel-ktx 依赖项(如 cmets 中的 link 之一)很容易。

【讨论】:

    最近更新 更多