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

如何让App启动于titleFragment,且返回键跳转至gameFragment?

解决导航返回跳转问题的两种方案

方案一:拦截返回键手动导航(推荐)

保持startDestination仍为titleFragment,在aboutFragment和rulesFragment中分别拦截返回键事件,手动导航至gameFragment并调整导航栈:

  1. 在aboutFragment的onViewCreated方法中添加返回键拦截逻辑:
override fun onViewCreated(view: View, savedInstanceState: Bundle?) {
    super.onViewCreated(view, savedInstanceState)
    
    requireActivity().onBackPressedDispatcher.addCallback(viewLifecycleOwner, object : OnBackPressedCallback(true) {
        override fun handleOnBackPressed() {
            val navController = findNavController()
            // 导航到gameFragment,同时移除栈中的titleFragment和当前的aboutFragment
            navController.navigate(
                R.id.gameFragment, // 替换为你的gameFragment的id
                null,
                NavOptions.Builder()
                    .setPopUpTo(R.id.titleFragment, inclusive = true)
                    .build()
            )
        }
    })
}
  1. 在rulesFragment中复制上述逻辑,确保跳转目标id为gameFragment即可。

栈行为说明

  • 若希望从gameFragment返回时直接退出App:使用上述代码,setPopUpTo(R.id.titleFragment, inclusive = true)会将栈中titleFragment及之前的所有页面移除,最终栈中仅保留gameFragment。
  • 若希望从gameFragment返回时回到titleFragment:修改NavOptions为setPopUpTo(R.id.aboutFragment, inclusive = true)(aboutFragment场景),此时栈结构变为[titleFragment, gameFragment],返回时会回到titleFragment。

方案二:跳转时预调整导航栈

如果希望从titleFragment跳转至about/rulesFragment时就调整栈结构,让返回键默认回到gameFragment,可在跳转时添加栈操作:

在titleFragment中跳转至aboutFragment的代码里,先导航到gameFragment再跳转至aboutFragment,并移除titleFragment的栈记录:

// 从titleFragment跳转到aboutFragment的逻辑
val navController = findNavController()
navController.navigate(
    R.id.gameFragment,
    null,
    NavOptions.Builder()
        .setPopUpTo(R.id.titleFragment, inclusive = true)
        .build()
)
navController.navigate(R.id.aboutFragment)

注意事项

  • 此方案会产生两次导航动画,若需优化可关闭动画(在NavOptions中添加setEnterAnim(0).setExitAnim(0))。
  • 重启App后仍会从titleFragment启动,符合需求。

内容的提问来源于stack exchange,提问作者HaveMercyOnMe

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.12 15:45:43