You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Android Navigation Controller返回上一级:需新增目的地还是用内置方法?

关于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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.08 21:43:13