【发布时间】:2020-09-27 14:57:01
【问题描述】:
我正在使用导航图在 Android 上导航 Fragments。目前,我可以从一个片段转到另一个片段,然后在后按时返回。
现在我需要返回到嵌入在 FloatingActionButton 中的 OnClickListener 中的上一个 Fragment,该 FloatingActionButton 托管在托管 Fragment 的 Activity 中,而不是后按。
目前,以下代码将我一直带到开始片段:
NavController navController = NavHostFragment.findNavController(FragmentSelect.this);
navController.setGraph(R.navigation.nav_graph, bundle);
navController.popBackStack();
我也尝试过getActivity().onBackPressed();,这也让我回到了开始的片段。
如何回到之前的 Fragment?我正在尝试遵循本指南, Pass data to the start destination,用于将 Bundle 返回到起始目的地,但它忽略了如何返回到起始目的地。
我也想过创建另一个动作来返回开始目的地,但是后退按钮会返回到错误的片段。有没有办法阻止它?
【问题讨论】:
-
摆脱
setGraph()电话。只需致电popBackStack()。 -
抱歉,我遗漏了一个细节。我在嵌入在托管 Fragment 的 Activity 中的 FloatingActionButton 中的 OnClickListener 中。
-
“我在一个 OnClickListener 内,它嵌入在托管 Fragment 的 Activity 中托管的 FloatingActionButton 中”——您的代码 sn-p 另有建议。无论如何,您想弹出 现有 导航图的后退堆栈,而不是创建 新 导航图,然后尝试弹出该导航图的后退堆栈。所以,摆脱
setGraph()调用,只需调用popBackStack()。 -
Doh,这就是我复制和粘贴的结果。我删除了 setGraph 调用,它现在可以工作了!
标签: android android-fragments android-navigation-graph