MVVM Single Activity应用程序在离开应用程序或启动意图后返回到带有导航组件的嵌套片段



在按下主页按钮、与另一个应用程序共享数据或切换活动后,我正试图返回到特定的片段。

底部的碎片Nav:

A B C D

在应用程序中共享的片段,可以嵌套或从底部导航到Nav片段:

E F G

预期行为

用户导航堆栈:

A->E

按下主页按钮并重新打开应用程序,堆栈保持不变。

A->E

实际行为

用户导航堆栈:

A->E

按下主页按钮并重新打开应用程序,返回到第一个片段

A

在Main ActivityonPause方法期间,我试图通过将捆绑包从navController.saveState()传递到视图模型来恢复导航状态,并使用navController.restoreState()on Resume进行恢复,但没有成功。导航组件不具备此功能吗?

您要查找的是Multiple Backstack。android中的每个Fragment都有自己的堆栈。因此,如果导航到ParentFragment中的另一个Fragment,则ParentFragment将在其堆栈中添加childFragment。在您的情况下,您的ParentFragmentAchildFragment是E.

然而,NavigationComponent并没有对Multiple Backstack的普通支持。自从NavigationComponent发布以来,NavigationComponent库的创建者Ian Lake一直在研究这个问题,但至今仍未交付。这并不意味着他不在研究,这只是意味着(正如Ian自己所说(由于FragmentsAPI的存在,实现起来更难。

回到你的问题,如果你真的想实现MultipleBackstack,那么你可以遵循这个项目,几乎任何想要MultipleBackstackNavigationComponent的人都会首先提到这个项目。还有一个谷歌示例展示了如何实现这种行为。

相关内容

  • 没有找到相关文章

最新更新