0

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

在此处输入图像描述

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

例如,假设 Main Fragment 有一个项目网格,而 Bottom Sheet Fragment 显示最后单击的项目详细信息。用户可能会单击底部工作表片段中详细信息内的按钮,比如说“立即订购”按钮,现在必须将这个事件执行到主片段。请不要拘泥于这个特定的用例,这只是我为了说明需要而制作的一个例子。

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

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

4

1 回答 1

0

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

于 2018-09-02T05:58:49.587 回答