Android Navigation Controller返回上一级:需新增目的地还是用内置方法?
你完全不需要为返回上一级添加额外的目的地或自定义action,Navigation Controller已经提供了内置的回退方法,直接调用即可。
两种常用的回退方式:
- 回到直接上一级目的地:使用
popBackStack()方法,它会弹出当前栈顶的目的地,自动回到上一个页面。这正好适配你的需求,直接把按钮点击事件补上就行:this.back_to_auth_selection.setOnClickListener { navController.popBackStack() } - 回退到指定的某个目的地:如果需要跳过中间页面直接回到更早的某个页面,可以带参数调用
popBackStack(),比如你想直接回到authSelectionFragment:this.back_to_auth_selection.setOnClickListener { // 第二个参数false表示不包含指定的目的地本身,true则会把它也弹出栈 navController.popBackStack(R.id.authSelectionFragment, false) }
补充说明:
- 在导航图(
navigation.xml)里不需要额外定义返回的action,因为回退是Navigation Component的内置行为,只有跳转到新的、未在回退栈中的目的地时才需要定义action(比如你代码里的action_signUpFragment_to_homeActivity这类)。 - 如果你的页面使用了ActionBar,Navigation Component会自动绑定返回键的行为,不需要额外处理,但自定义按钮就需要手动调用上述方法。
内容的提问来源于stack exchange,提问作者abd3lraouf
相关产品推荐
相关产品推荐

