我正在使用Android导航组件来处理片段。
我有片段A,B,C和E,它们都可以打开片段D(数据稍有不同)。
然后在片段D上,您可以返回或打开另一个具有不同数据的片段D。
用户可以单击A-> D-> D-> D-> D-> D,然后返回。
是否有一种简单的方法可以从D直接返回A(或B,C,E,无论起点是什么)而又不返回所有D调用?
我希望可以在操作箭头上设置参数,但没有找到任何有效的设置。
这正是“ Single Top”选项的作用:仅在后堆栈的顶部允许该目标的单个副本。
<action android:id="@+id/action_nav_detail_self"
app:destination="@id/nav_detail"
app:launchSingleTop="true"/>
直接从D导航到A有一种棘手的方法
覆盖父活动中的onBackpressed
@Override
public void onBackPressed() {
if (Navigation.findNavController(this,R.id.nav_host_fragment)
.getCurrentDestination().getId() == (id of D)) {
NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
navController.navigate(R.id.action_D_to_A);
}
else
super.onBackPressed();
}