我一直在玩JetPack的导航组件。在大多数情况下,它都是相当不错的,尽管我遇到了一些问题/案例,但是我还没有找到一个合适的解决方案。
假设我们有一个带有模块化架构(打包策略?)的单一活动应用,而我们不想拥有上帝导航模块。我们希望所有模块都拥有自己的nav_graph
,并且希望能够在图与图之间来回跳转。
假设我们有这样的依赖关系:
app
--dependsOn-> library
--dependsOn-> details
。 library
和details
都有自己的nav_graphs
,它们知道如何在每个模块中进行导航。
现在,如果我们处于app
模块中,我们将能够直接导航到details
的任何一个目的地,因为app
知道两个library
和details
。但是,我们如何从details
导航到library
的另一个目的地?
我找到的解决方案之一是通过某种Router
模块(通常是Interface
模块中的God
),这不是理想的选择,尤其是当您之所以使用SafeArgs
之类的东西是因为,例如,如果您想更改要传递的参数,则需要更改路由器的方法签名等。
我找到的另一种解决方案是add destinations dynamically。 尽管实际上我记得在某处读到,如果您知道类/目标的全限定名称,尽管有Android Studio的警告,您仍然可以导航到该名称,我实际上并不能针对我的情况进行这项工作。
我尝试的第三件事是将popUpTo
定义中的inclusive=true
与nav_graph
一起使用来弹出该图,但是我对此并不走运(我正在使用NavDrawer
,并想弹出回到顶层位置。
有没有人找到一个好的解决方案?