Android导航组件-如何将startDestination从后台弹出?

时间:2020-03-02 21:26:43

标签: android android-fragments android-architecture-navigation

我有一个使用Android导航组件进行导航的活动应用程序。当用户启动我的应用程序时,我想显示一个欢迎片段,使他们可以选择自己今天的工作方式(他们可以选择工作流程A或工作流程B)。

一旦用户选择了一个选项,他们就会导航到“工作片段”,使他们可以开始工作。如果他们此时单击“后退”按钮,则我希望该应用程序关闭,而不是导航回“欢迎片段”(“欢迎片段”仅在应用程序启动时显示)。

我设置导航图的方式是在同一图上将“欢迎片段”设置为开始目标,将“工作片段”设置为另一个目标。

启动该应用程序后,我的Welcome Fragment会如期显示,但是似乎没有一种巧妙的方法可以从Welcome Fragment中启动Do Work Fragment并从后台堆栈中弹出WelcomeFragment,以便它可以无需重新杀死应用程序就可以再次导航到该应用程序。

我已经确定的是,在Welcome Fragment中,调用findNavController.popBackStack(),然后调用findNavController()。navigate(R.id.do_work_fragment)。这似乎具有所需的行为,但是似乎不得不“手动”弹出后退堆栈确实很奇怪。起初,我以为这是永远不会做的,因为我发现弹出堆栈上只有一个项目会导致应用程序关闭,但看起来还不错。

我是否考虑得太多,我的解决方案还不错,或者是否有更好的方法可以使用Android的Navigation Components解决此导航方案?

0 个答案:

没有答案