我的片段流是这样的
Main -> A -> B -> C ->A
在片段c中,它具有一个提交按钮,该按钮将返回到A。 当我按A中的后退按钮时,我希望它返回到Main。但是它返回片段c。
在片段C中,我使用此
findNavController().navigate(R.id.action_c_to_a)
nav_graph.xml
<fragment
android:id="@+id/fragmentC"
android:name="xxx"
android:label="xxx">
<action
app:launchSingleTop="true"
app:popUpTo="@+id/fragmentA"
app:popUpToInclusive="true"
android:id="@+id/action_c_to_a"
app:destination="@id/fragmentA" />
</fragment>
答案 0 :(得分:6)
为什么不弹出片段A?您可以只调用findNavController().popBackStack(R.id.fragmentA, false)
而不用导航操作。
答案 1 :(得分:0)
尝试查看我的完整解决方案,其中包含从后堆栈中删除/杀死片段。
Navigation Component set transition animation programmatically
答案 2 :(得分:0)
您可以重写后退按钮的行为来执行此操作。 Provide custom back navigation
答案 3 :(得分:0)
在操作标签内的 nav_graph 内添加此内容
app:popUpTo="@id/homeFragment"
见:Not able to destroy fragment from Nav Controller in Android
答案 4 :(得分:-1)
使用以下代码从后堆栈中删除片段:
FragmentManager manager = getActivity().getSupportFragmentManager();
FragmentTransaction trans = manager.beginTransaction();
trans.remove(myFrag);
trans.commit();
manager.popBackStack();