在使用Fragment的FragmentTransaction commit 时候经常会碰到下面的错误:
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(Unknown Source)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(Unknown Source)
at android.support.v4.app.BackStackRecord.commitInternal(Unknown Source)
at android.support.v4.app.BackStackRecord.commit(Unknown Source)
at com.yulore.yellowpage.DialLogActivity.a(Unknown Source)
at com.yulore.yellowpage.fragment.x.handleMessage(Unknown Source)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:137)
at android.app.ActivityThread.main(ActivityThread.java:4797)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:511)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:789)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:556)
at dalvik.system.NativeStart.main(Native Method)
查看Developer文档 commit 方法说明

解决办法
把commit()方法替换成 commitAllowingStateLoss()
ft.setTransition(FragmentTransaction.TRANSIT_FRAGMENT_FADE);
if (this.isFinishing()) { //判断Activity是否还存在
return;
}
ft.commitAllowingStateLoss();
// ft.commit();