离开应用程序或启动意图后,MVVM 单个 Activity 应用程序 return 到带有导航组件的嵌套片段
MVVM Single Activity app return to a nested fragment with Navigation component after leaving app or launching intent
我正在尝试在按下主页按钮、与其他应用共享数据或切换活动后 return 到特定片段。
bottomNav 中的片段:
A B C D
在应用程序周围共享的片段,可以嵌套或从底部导航片段导航到:
E F G
预期行为
用户导航堆栈:
A -> E
按下主页按钮并重新打开应用程序,堆栈保持不变。
A -> E
实际行为
用户导航堆栈:
A -> E
按下主页按钮并重新打开应用程序,回到第一个片段
一个
我试图通过在 Main Activity onPause 方法期间将包从 navController.saveState()
传递到视图模型来恢复导航状态,并使用 navController.restoreState()
onResume 无济于事。导航组件不支持吗?
您要找的是Multiple Backstack
。 android 中的每个 Fragment
都维护自己的堆栈。因此,如果您导航到 ParentFragment
中的另一个 Fragment
,您的 ParentFragment
将在其堆栈中添加 childFragment
。
在你的例子中,你的 ParentFragment
是 A
而 childFragment
是 E.
但是,NavigationComponent
没有对 Multiple Backstack
的原始支持。自 NavigationComponent
发布以来,NavigationComponent
库的创建者 Ian Lake 一直在研究这个问题,但仍未解决。这并不意味着他没有在努力,它只是意味着(正如 Ian 自己所说)由于 Fragments
API.
而更难实现
回到你的问题,如果你真的想实现 MultipleBackstack
那么你可以按照这个 project which pretty much anyone who wants MultipleBackstack
with NavigationComponent
first refers to. There is also a google sample 来展示如何实现这个行为。
我正在尝试在按下主页按钮、与其他应用共享数据或切换活动后 return 到特定片段。
bottomNav 中的片段:
A B C D
在应用程序周围共享的片段,可以嵌套或从底部导航片段导航到:
E F G
预期行为
用户导航堆栈:
A -> E
按下主页按钮并重新打开应用程序,堆栈保持不变。
A -> E
实际行为
用户导航堆栈:
A -> E
按下主页按钮并重新打开应用程序,回到第一个片段
一个
我试图通过在 Main Activity onPause 方法期间将包从 navController.saveState()
传递到视图模型来恢复导航状态,并使用 navController.restoreState()
onResume 无济于事。导航组件不支持吗?
您要找的是Multiple Backstack
。 android 中的每个 Fragment
都维护自己的堆栈。因此,如果您导航到 ParentFragment
中的另一个 Fragment
,您的 ParentFragment
将在其堆栈中添加 childFragment
。
在你的例子中,你的 ParentFragment
是 A
而 childFragment
是 E.
但是,NavigationComponent
没有对 Multiple Backstack
的原始支持。自 NavigationComponent
发布以来,NavigationComponent
库的创建者 Ian Lake 一直在研究这个问题,但仍未解决。这并不意味着他没有在努力,它只是意味着(正如 Ian 自己所说)由于 Fragments
API.
回到你的问题,如果你真的想实现 MultipleBackstack
那么你可以按照这个 project which pretty much anyone who wants MultipleBackstack
with NavigationComponent
first refers to. There is also a google sample 来展示如何实现这个行为。