android - 与 setnextanim 崩溃?

标签 android android-fragments android-animation

我不断收到 setnextanim 崩溃,但没有追踪到我代码中的确切位置。这是我唯一使用 nextanim 的地方:

@Override
    public Animation onCreateAnimation(int transit, boolean enter, int nextAnim) {
        Animation defaultAnimation = super.onCreateAnimation(transit, enter, nextAnim);

        if (defaultAnimation == null && nextAnim != 0) {
            defaultAnimation = AnimationUtils.loadAnimation(getActivity(), nextAnim);
        }

        if (defaultAnimation != null) {
            if (getView() != null) {
                getView().setLayerType(View.LAYER_TYPE_HARDWARE, null);
            }

            defaultAnimation.setAnimationListener(new Animation.AnimationListener() {
                @Override
                public void onAnimationStart(Animation animation) {
                }

                public void onAnimationEnd(Animation animation) {
                    if (getView() != null) {
                        getView().setLayerType(View.LAYER_TYPE_NONE, null);
                    }
                }

                @Override
                public void onAnimationRepeat(Animation animation) {
                }
            });
        }

        return defaultAnimation;
    }

这是我能找到的痕迹:

FATAL EXCEPTION: main
java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.Fragment.setNextAnim(int)' on a null object reference
    at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:765)
    at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2580)
    at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2367)
    at android.support.v4.app.FragmentManagerImpl.removeRedundantOperationsAndExecute(FragmentManager.java:2322)
    at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2229)
    at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:700)
    at android.os.Handler.handleCallback(Handler.java:751)
    at android.os.Handler.dispatchMessage(Handler.java:95)
    at android.os.Looper.loop(Looper.java:154)
    at android.app.ActivityThread.main(ActivityThread.java:6119)
    at java.lang.reflect.Method.invoke(Native Method)
    at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:886)
    at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:776)

知道我做错了什么可能导致这次崩溃吗?

最佳答案

查看异常:

java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.Fragment.setNextAnim(int)' on a null object reference

事实上,堆栈跟踪不包含对您代码的引用,我认为假设它与您的这部分代码无关是合理的。

相反,它可能与某个 View 在某个地方被垃圾收集/清空有关,然后稍后尝试使用它,在空对象上调用显示/隐藏或类似操作。参见 this discussion .

关于android - 与 setnextanim 崩溃?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48102683/

相关文章:

android - 当我将应用程序安装到我的设备时,Android 出现奇怪的问题

android - 如何从android中的web View 获取当前页面的url

android - 画廊中 ListView 的 Coverflow 动画

android - 使用 alpha 动画更改 View 颜色

java - 如何连续动画 Fab 按钮(放大/缩小)?

android - 纹理小部件渲染 OpenGL 示例

android - 使用 PreferenceFragment 时如何启用/禁用选项菜单

java - 改造API数据在Fragment中传递

关于更改方向的 Android Fragment 生命周期问题

java - 使AnimationDrawable向前移动