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

Android Fragment返回时反向播放切页动画的实现问题

问题原因

你当前的核心问题是setCustomAnimations的回退动画参数配置错误,同时预先定义的动画变量赋值也存在错误。

修复步骤

1. 修正动画变量赋值

你原来的变量赋值存在重复引用问题,先调整为正确的对应关系:

// 正向跳转时:新Fragment从右侧滑入
int enterAnim = R.anim.slide_in_right;
// 正向跳转时:旧Fragment从左侧滑出
int exitAnim = R.anim.slide_out_left;
// 回退时:要恢复的旧Fragment从左侧滑入
int popEnterAnim = R.anim.slide_in_left;
// 回退时:当前Fragment从右侧滑出
int popExitAnim = R.anim.slide_out_right;

2. 正确配置FragmentTransaction的自定义动画

setCustomAnimations四个参数的含义依次为:正向进入动画、正向退出动画、回退进入动画、回退退出动画,直接按上面的变量顺序传入即可,不需要你之前注释的自行判断currentFragment和lastFragment的逻辑,FragmentManager回退栈会自动触发回退动画。

3. 修正后的完整业务代码

int enterAnim = R.anim.slide_in_right;
int exitAnim = R.anim.slide_out_left;
int popEnterAnim = R.anim.slide_in_left;
int popExitAnim = R.anim.slide_out_right;
//底部导航栏
BottomNavigationView bottomNav = findViewById(R.id.nav_menu);
//导航栏下方选项选中时的事件监听器
bottomNav.setOnItemSelectedListener(item -> {
    Fragment selectedFragment = null;
    switch(item.getItemId()){
        case R.id.nav_home:
            selectedFragment = new HomeFragment(dbHelper, db);
            break;
        case R.id.nav_list:
            selectedFragment = new ListFragment(dbHelper, db);
            break;
        case R.id.nav_add:
            selectedFragment = new AddFragment(dbHelper, db);
            break;
    }
    getSupportFragmentManager().beginTransaction()
        .setCustomAnimations(enterAnim, exitAnim, popEnterAnim, popExitAnim)
        .replace(R.id.fragment_container, selectedFragment)
        .addToBackStack(null)
        .commit();
    return true;
});

4. 可选优化(避免回退栈栈底残留空白页)

如果点击返回键到最后一页之后再点击返回会出现空白页,可重写onBackPressed方法判断回退栈数量:

@Override
public void onBackPressed() {
    if (getSupportFragmentManager().getBackStackEntryCount() == 1) {
        // 回退栈只剩最后一个Fragment时直接关闭页面
        finish();
    } else {
        super.onBackPressed();
    }
}

你提供的四个动画xml文件本身逻辑都是正确的,不需要修改,按上述代码调整后即可实现正向跳转右滑入,回退时右滑出的对应反向动画效果。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 00:06:01