如何在嵌套导航控制器碎片之间传递事件/数据

问题描述 投票:0回答:1

我正在计划像这样的视图层次结构:

enter image description here

基本上,主片段将能够触发底部片材导航控制器内的导航,底部片段片段还将能够触发底部片材导航控制器内的导航并将事件/数据发送到主片段。

例如,假设主片段具有项目网格,而底部片段片段显示最后单击的项目详细信息。用户可能会单击底部片段中详细信息内的按钮,让我们说“立即订购”按钮,现在必须将此事件执行到主片段。请不要紧紧抓住这个特定的用例,这只是我为了说明需要而做的一个例子。

我的问题是如何克服Android Jetpack中导航控制器提供的分离?有很多关于如何使用常见的Activity等来管理共享同一屏幕的Fragments之间的通信的文档,但现在有新的导航控制器带来新的抽象de解耦Fragment处理所以我不太确定如何继续。

我想过可能使用Singleton传递事件/数据,也许用LiveData,但我认为可能会有一些更优雅的解决方案。

android android-fragments android-architecture-components android-architecture-navigation
1个回答
0
投票

使用LiveData和ViewModel的解决方案是一个非常好的解决方案,MainFragment和BottomSheetFragment将附加到同一个ViewModel实例。 MainFragment将在ViewModel中观察一些LiveData对象,当用户单击底部片段中详细信息内的按钮时,ViewModel中的LiveData对象将被更改,并且MainFragment将被通知。

© www.soinside.com 2019 - 2024. All rights reserved.