使用导航架构组件时在 Activity 和 Fragment 之间进行通信

Communicating between Activities and Fragments when using Navigation Architecture Component

我想让主持人 Activity 知道片段中发生了什么事情。传统上,我会有一个带有片段可以调用的回调的接口,但现在我们正在使用导航架构组件。

有没有办法将对主机 activity 的引用传递给片段,否则我该如何解决 "Communication between activities and fragments" 情况?

谢谢!

您可以将 LiveData 数据持有者 class 用于此类目的。

Here 是一篇解释 Fragment <--> Fragment 沟通和 Activity <--> Fragment 沟通的文章。

您可以在 activity 和所有片段之间共享一个 ViewModel。并在该 viewModel 中使用 liveData。因此,当片段中发生某些事情时,您会更改 liveData 并观察 activity

中的 liveData

您可以使用共享 ViewModel (https://developer.android.com/topic/libraries/architecture/viewmodel#sharing)

它会在 activity 存在时处于活动状态,并且所有子片段都可以访问它。

例如,可以在所有片段中收听共享视图模型中的 LiveData。如果其中一个片段更改了数据,所有其他片段都会得到该更改。