本文档简要介绍了使用对话框目的地如何带来管理返回堆栈方面的一些特殊注意事项。
概览
一个或多个对话框目的地只能存在于返回堆栈的顶部。这是因为,当用户导航到不是对话框目的地的目的地时,NavController
会自动将所有对话框目的地从堆栈顶部弹出。这样可确保当前目的地始终完全显示在返回堆栈上的其他目的地之上。
目的地可以是托管的目的地、activity 目的地或对话框目的地。
示例
如果返回堆栈仅由填充导航宿主的托管目的地组成,当用户导航到对话框目的地时,返回堆栈可能如图 2 所示:
![顶部显示一个对话框目的地的返回堆栈](https://developer.android.google.cn/static/images/guide/navigation/backstack-1.png?authuser=1&hl=zh-cn)
如果用户随后导航到另一个对话框目的地,系统会将该目的地添加到返回堆栈的顶部,如图 3 所示:
![顶部显示两个对话框目的地的返回堆栈](https://developer.android.google.cn/static/images/guide/navigation/backstack-2.png?authuser=1&hl=zh-cn)
Dialog
目的地的返回堆栈。如果用户随后导航到非浮动目的地,系统会先将所有对话框目的地从返回堆栈顶部弹出,然后再导航到新目的地,如图 4 所示:
![系统弹出对话框目的地,然后添加新目的地](https://developer.android.google.cn/static/images/guide/navigation/backstack-3.png?authuser=1&hl=zh-cn)
Dialog
目的地,然后添加新的目的地。