Android setNextTransition(int,int)抛出NullPointerException

Android setNextTransition(int,int)抛出NullPointerException,android,android-fragments,fragment-backstack,Android,Android Fragments,Fragment Backstack,我为我的应用程序使用支持片段(onCreate()中的setRetainInstance(true))。有时应用程序会抛出NullPointerException: Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.livemaster.zhurnal/ru.livemaster.zhurnal.activity.main.MainActivity}: java.lang.

我为我的应用程序使用支持片段(onCreate()中的setRetainInstance(true))。有时应用程序会抛出NullPointerException:

Fatal Exception: java.lang.RuntimeException: Unable to start activity ComponentInfo{ru.livemaster.zhurnal/ru.livemaster.zhurnal.activity.main.MainActivity}: java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.Fragment.setNextTransition(int, int)' on a null object reference
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3253)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
       at android.app.ActivityThread.access$1100(ActivityThread.java:221)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:158)
       at android.app.ActivityThread.main(ActivityThread.java:7224)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
Caused by java.lang.NullPointerException: Attempt to invoke virtual method 'void android.support.v4.app.Fragment.setNextTransition(int, int)' on a null object reference
       at android.support.v4.app.BackStackRecord.executeOps(BackStackRecord.java:716)
       at android.support.v4.app.FragmentManagerImpl.executeOps(FragmentManager.java:2303)
       at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2132)
       at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2092)
       at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1998)
       at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
       at android.support.v4.app.FragmentActivity.onStart(FragmentActivity.java:607)
       at android.support.v7.app.AppCompatActivity.onStart(AppCompatActivity.java:181)
       at android.app.Instrumentation.callActivityOnStart(Instrumentation.java:1265)
       at android.app.Activity.performStart(Activity.java:6915)
       at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:3216)
       at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:3349)
       at android.app.ActivityThread.access$1100(ActivityThread.java:221)
       at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1794)
       at android.os.Handler.dispatchMessage(Handler.java:102)
       at android.os.Looper.loop(Looper.java:158)
       at android.app.ActivityThread.main(ActivityThread.java:7224)
       at java.lang.reflect.Method.invoke(Method.java)
       at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1230)
       at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:1120)
BackbackRecord中的此位置发生异常:

 void executeOps() {
        final int numOps = mOps.size();
        for (int opNum = 0; opNum < numOps; opNum++) {
            final Op op = mOps.get(opNum);
            final Fragment f = op.fragment;
            f.setNextTransition(mTransition, mTransitionStyle); //Exception occurs in this place
            switch (op.cmd) {
                ...
            }
            if (!mAllowOptimization && op.cmd != OP_ADD) {
                mManager.moveFragmentToExpectedState(f);
            }
        }
        if (!mAllowOptimization) {
            // Added fragments are added at the end to comply with prior behavior.
            mManager.moveToState(mManager.mCurState, true);
        }
    }
然后执行替换事务:

protected static <T extends RichFragment> void replaceFragment(FragmentManager fragmentManager, T fragment, Bundle bundle) {
    fragment.setArguments(bundle);
    popWholeBackStack(fragmentManager);
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    setAnimation(transaction);
    transaction.replace(fragment.getContainerId(), fragment, getFragmentTag(fragment));
    transaction.commit();
}
受保护的静态void replaceFragment(FragmentManager FragmentManager、T片段、捆绑包){
fragment.setArguments(bundle);
popWholeBackStack(碎片管理器);
FragmentTransaction=fragmentManager.beginTransaction();
设置动画(事务);
replace(fragment.getContainerId(),fragment,getFragmentTag(fragment));
commit();
}
这会导致坠机吗

protected static <T extends RichFragment> void replaceFragment(FragmentManager fragmentManager, T fragment, Bundle bundle) {
    fragment.setArguments(bundle);
    popWholeBackStack(fragmentManager);
    FragmentTransaction transaction = fragmentManager.beginTransaction();
    setAnimation(transaction);
    transaction.replace(fragment.getContainerId(), fragment, getFragmentTag(fragment));
    transaction.commit();
}