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

Android返回键按下时如何从第6个Fragment直接跳转至第1个?

实现从第6个Fragment直接返回至第1个Fragment的方法

针对你的需求,这里提供两种常见实现方案,根据你使用的Fragment管理方式选择:

方案一:使用原生FragmentManager管理

在你的宿主Activity中重写onBackPressed()方法,拦截返回键事件并处理:

@Override
public void onBackPressed() {
    // 获取当前显示的Fragment
    Fragment currentFragment = getSupportFragmentManager().findFragmentById(R.id.fragment_container);
    
    // 判断当前是否是第6个Fragment(替换成你实际的第6个Fragment类名)
    if (currentFragment instanceof SixthFragment) {
        // 清空整个Fragment回退栈,移除中间所有Fragment
        getSupportFragmentManager().popBackStackImmediate(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
        
        // 切换到第1个Fragment(替换成你实际的第1个Fragment类名)
        getSupportFragmentManager().beginTransaction()
                .replace(R.id.fragment_container, new FirstFragment())
                // 若希望回到第1个Fragment后按返回键直接退出应用,删除下面这行
                .addToBackStack(null)
                .commit();
    } else {
        // 其他Fragment按默认返回逻辑处理
        super.onBackPressed();
    }
}

关键说明:

  • 把R.id.fragment_container替换成你布局中存放Fragment的容器ID
  • 替换SixthFragment和FirstFragment为你项目中对应的Fragment类名
  • POP_BACK_STACK_INCLUSIVE参数会彻底清空回退栈,确保中间Fragment不会残留
  • 如果第1个Fragment是应用首页,建议删除.addToBackStack(null),这样回到首页后按返回键会直接退出应用

方案二:使用Navigation Component(Android推荐)

如果你用Jetpack Navigation管理Fragment,同样在宿主Activity中重写onBackPressed():

@Override
public void onBackPressed() {
    NavController navController = Navigation.findNavController(this, R.id.nav_host_fragment);
    
    // 判断当前是否在第6个Fragment(替换成你导航图中第6个Fragment的ID)
    if (navController.getCurrentDestination() != null 
        && navController.getCurrentDestination().getId() == R.id.sixth_fragment) {
        // 直接导航到第1个Fragment,并清空中间所有页面的回退栈
        navController.navigate(R.id.first_fragment, null, new NavOptions.Builder()
                // true表示连第1个Fragment也从栈中移除,重新添加;false则保留原有第1个Fragment
                .setPopUpTo(R.id.first_fragment, true)
                .build());
    } else {
        super.onBackPressed();
    }
}

关键说明:

  • 把R.id.nav_host_fragment替换成你布局中NavHostFragment的ID
  • R.id.sixth_fragment和R.id.first_fragment替换成你导航图中对应的目的地ID
  • setPopUpTo的第二个参数设为true,会清空回退栈中所有页面(包括第1个),然后重新添加第1个Fragment;设为false则保留原有的第1个Fragment,仅移除中间页面

内容的提问来源于stack exchange,提问作者Vivek M Fauzdar

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.23 15:24:08