2

当片段中发生某些事情时,我想让主机 Activity 知道。传统上,我会有一个带有 Fragment 可以调用的回调的接口,但现在我们使用导航架构组件。

有没有办法将对主机活动的引用传递给片段,或者我将如何解决“活动和片段之间的通信”情况?

谢谢!

4

3 回答 3

5

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

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

于 2020-02-18T15:12:53.360 回答
0

您可以在您的活动和所有片段之间拥有一个共享的 ViewModel。并在该视图模型中使用 liveData。因此,当片段中发生某些事情时,您会更改 liveData 并观察活动中的 liveData

于 2020-02-18T15:42:55.800 回答
0

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

当活动存在并且所有子片段都可以访问它时,它将是活动的。

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

于 2020-02-18T15:43:38.827 回答