使用 android 导航组件从第一个 activity 导航到第二个 activity 时如何 close/finish 第一个 activity

How to close/finish the first activity when navigating from first activity to second activity using android navigation component

我是第一次使用 android 导航组件,也是 Android 架构组件的新手。据我所知,android 架构中的导航组件主要使用片段在同一个 activity 中进行导航。我试图使用导航组件从一个 activity 导航到另一个:

activity.finish()              
Navigation.findNavController(btnView).navigate(R.id.activity)

这里R.id.activity是导航图XML文件中定义的activity的id。

当我按下后退按钮时,我仍然可以看到之前的屏幕。我的问题是返回堆栈在导航组件中是如何工作的,为什么我的第一个 activity 出现,即使 activity 的销毁方法被调用(由于 activity.finish())?

我可以回答你的第二部分,因为第一部分会有更好理解的人来解释你。

您的 activity 未通过执行以下方法完成,因为如果它已完成,您就不会在返回堆栈中看到它。

activity.finish()

在导航方法之后完成当前 activity。以下是结束当前 activity.

的正确方法
btn.setOnClickListener{            
Navigation.findNavController(btnView).navigate(R.id.secondActivity)
(activity as currentActivity).finish()
}