如何在使用android导航组件从第一个活动导航到第二个活动时关闭/完成第一个活动

如何在使用android导航组件从第一个活动导航到第二个活动时关闭/完成第一个活动,android,android-activity,android-architecture-components,android-architecture-navigation,Android,Android Activity,Android Architecture Components,Android Architecture Navigation,我第一次使用android导航组件,我对android架构组件也不熟悉。据我所见,android架构中的导航组件主要使用片段在同一活动中进行导航。我试图使用导航组件从一个活动导航到另一个活动: activity.finish() Navigation.findNavController(btnView).navigate(R.id.activity) 此处R.id.activity是导航图XML文件中定义的活动的id 当我按下后退按钮时,我仍然能够看到上一个屏幕。我

我第一次使用android导航组件,我对android架构组件也不熟悉。据我所见,android架构中的导航组件主要使用片段在同一活动中进行导航。我试图使用导航组件从一个活动导航到另一个活动:

activity.finish()              
Navigation.findNavController(btnView).navigate(R.id.activity)
此处
R.id.activity
是导航图XML文件中定义的活动的id


当我按下后退按钮时,我仍然能够看到上一个屏幕。我的问题是导航组件中的后堆栈是如何工作的,以及为什么即使调用了活动的销毁方法(由于
activity.finish()
),也会出现我的第一个活动?

我可以回答您的第二部分,第一部分会有人更好地理解并解释

您的活动并没有通过执行下面的方法来完成,因为若它完成了,那个么您就不会在后堆栈中看到它

activity.finish()

在导航方法之后完成当前活动。以下是完成当前活动的正确方法

btn.setOnClickListener{            
Navigation.findNavController(btnView).navigate(R.id.secondActivity)
(activity as currentActivity).finish()
}

Haider,不需要使用as运算符显式进行类型转换。我发现了我犯的错误。我只是想和大家分享我犯的错误,为了让其他人受益,我对一个活动使用了两个意图过滤器,我没有使用singleTop启动模式,因此活动创建了两次,因此活动似乎没有被销毁