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

在Fragment中使用overridePendingTransition报错,求技术解决方案

在Fragment中使用overridePendingTransition的正确姿势

嘿,我一眼就看出问题所在了——你直接在Fragment里调用overridePendingTransition()肯定会出错,因为这个方法是Activity类的成员方法,Fragment本身并没有实现这个方法,直接调用自然会报找不到方法的错误。

问题根源

你当前的代码里,在Fragment的点击事件回调中直接调用overridePendingTransition(),而当前的执行上下文是Fragment实例,编译器找不到这个方法,运行时也会抛出异常。

解决方案1:通过getActivity()调用Activity的方法

最直接的修复方式是先获取当前Fragment依附的Activity实例,再调用它的overridePendingTransition()方法,记得一定要判空,避免Fragment和Activity分离时出现空指针:

med = (LinearLayout) getView().findViewById(R.id.second);
med.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i = new Intent(getContext(), SecondActivity.class);
        i.putExtra("table_name", "questCompFunda");
        startActivity(i);
        // 关键修改:获取Activity实例后调用过渡动画方法
        if (getActivity() != null) {
            getActivity().overridePendingTransition(android.R.anim.slide_in_left, android.R.anim.slide_out_right);
        }
    }
});

解决方案2:使用ActivityOptions(推荐)

如果你使用的是AndroidX或者较新的Android API,更推荐用ActivityOptions来设置过渡动画,这种方式更灵活,也不需要依赖Activity实例的直接调用:

med = (LinearLayout) getView().findViewById(R.id.second);
med.setOnClickListener(new View.OnClickListener() {
    @Override
    public void onClick(View v) {
        Intent i = new Intent(getContext(), SecondActivity.class);
        i.putExtra("table_name", "questCompFunda");
        // 创建自定义动画的ActivityOptions
        ActivityOptions options = ActivityOptions.makeCustomAnimation(
                requireContext(), // 用requireContext()确保上下文非空,适合确定Fragment已依附的场景
                android.R.anim.slide_in_left, 
                android.R.anim.slide_out_right
        );
        startActivity(i, options.toBundle());
    }
});

注意事项

  • 方案1中的getActivity()可能返回null(比如Fragment已经被销毁但回调还在执行),所以必须加非空判断;
  • 方案2中的requireContext()会在上下文为空时抛出异常,适合你确定Fragment处于活跃状态的场景,如果不确定,也可以用getContext()并判空后再使用。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.14 07:35:23