错误信息:
Caused by: java.lang.NullPointerException: Attempt to read from field 'int android.support.v4.app.Fragment.mContainerId' on a null object reference
at android.support.v4.app.FragmentTransition.addToFirstInLastOut(FragmentTransition.java:1017)
at android.support.v4.app.FragmentTransition.calculateFragments(FragmentTransition.java:976)
at android.support.v4.app.FragmentTransition.startTransitions(FragmentTransition.java:95)
at android.support.v4.app.FragmentManagerImpl.executeOpsTogether(FragmentManager.java:2146)
at android.support.v4.app.FragmentManagerImpl.optimizeAndExecuteOps(FragmentManager.java:2103)
at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:2013)
at android.support.v4.app.FragmentController.execPendingActions(FragmentController.java:388)
?
这个问题没有报具体哪一行出错了,关键信息是:
Attempt to read from field 'int android.support.v4.app.Fragment.mContainerId' on a null object reference
查了一下,错误的原因是,在使用FragmentTransaction对Fragment进行Hide隐藏的时候,某个Fragment是不存在的。想起来,由于需求改变,我将其中的一个Fragment换成了Activity,原先的Fragment不需要了。但是Hide的时候没有删掉相应的代码。所以只需要删掉就好了。
原先的:
transaction
.hide(mWholeFragment)
.hide(mSponsorFragment)
.hide(mNewAddFragment)
.hide(mParticipantFragment)
.hide(mDraftFragment);
删掉之后:
transaction
.hide(mWholeFragment)
.hide(mSponsorFragment)
.hide(mParticipantFragment)
.hide(mDraftFragment);