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

Fragment导航配置popUpTo后自定义返回键exit动画失效问题

问题根因

该问题确实是由popUpTo和popUpToInclusive配置搭配正向导航action的调用方式导致的。

你当前配置的action_usersFragment_to_mainFragment本质是正向导航到mainFragment,同时将usersFragment从回退栈中移除,此时触发的是正向导航的动画规则:

  • enterAnim对应新目标mainFragment的进入动画,所以你能看到slide_in_left效果正常
  • 因为popUpToInclusive=true会直接把当前的usersFragment从回退栈中弹出,正向导航的exitAnim逻辑被栈弹出逻辑覆盖,而正向导航流程不会触发popExitAnim配置,所以usersFragment的退出动画丢失。

系统返回键能正常运行动画,是因为系统返回触发的是Navigation组件默认的回退栈弹出逻辑,走的是popEnterAnim和popExitAnim的配置规则,和你主动调用正向action的逻辑完全不同。

解决方案

最简单的适配方案是自定义返回按钮不要调用你定义的这个正向action,直接触发系统回退逻辑即可,效果和系统返回键完全一致:
在自定义返回按钮的点击事件中加入以下代码:

// Kotlin 写法
requireActivity().onBackPressedDispatcher.onBackPressed()
// Java 写法
requireActivity().getOnBackPressedDispatcher().onBackPressed();

如果你的场景确实需要通过自定义action实现回退,需要调整导航配置逻辑:取消popUpTo和popUpToInclusive配置,改为在导航完成后手动处理回退栈,或者将动画配置适配正向导航的栈操作规则,但更推荐直接调用系统回退逻辑,无需额外修改配置,兼容性更好。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.10 01:48:01