在集成微信支付的時候 ?跳轉(zhuǎn)微信支付界面之前的界面 ?我是在Fragment中寫的 ?但是跳轉(zhuǎn)微信支付成功之后,在Fragment中進(jìn)行彈窗 點(diǎn)擊確定返回執(zhí)行g(shù)etFragmentManager().popBackStack();返回上一頁時 卻報了下圖異常
先說解決辦法 :
fragmentTransaction.commit(); 改為fragmentTransaction.commitAllowingStateLoss();就可以啦
集成支付寶也是在這個界面 但是卻沒有閃退 ?為什么跳轉(zhuǎn)到微信 ?在回來 ?卻不能調(diào)用getFragmentManager().popBackStack() 方法了呢
仔細(xì)觀察一下 ?在跳轉(zhuǎn)微信支付之前 ?界面好像頓了一下 ? ?上面的狀態(tài)欄也變成了微信的狀態(tài)欄顏色了 ?但是界面還是本app的界面?
debug一下 ?發(fā)現(xiàn)執(zhí)行了這個方法 onSaveInstanceState 如下圖
查看源碼 ?現(xiàn)在popBackStack方法中 ? ?
會執(zhí)行enqueueAction(OpGenerator action, boolean allowStateLoss) 方法 且allowStateLoss值為false
再點(diǎn)擊進(jìn)去會執(zhí)行checkStateLoss();方法
調(diào)用微信支付時 保存了 ?狀態(tài) ?因此mStateSaved 的值為true
因此會執(zhí)行checkStateLoss方法 ?拋出java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState異常
好了 ?到此結(jié)束 ?以上個人理解 ?如有出入 ?歡迎留言 ?共同學(xué)習(xí)共同進(jìn)步芹枷,遇到問題不可怕 ?可怕的是丟掉了尋找問題根源的勇氣