在集成微信支付的时候 跳转微信支付界面之前的界面 我是在Fragment中写的 但是跳转微信支付成功之后,在Fragment中进行弹窗 点击确定返回执行getFragmentManager().popBackStack();返回上一页时 却报了下图异常
![](https://img.haomeiwen.com/i9669165/f60797a685f165c8.png)
先说解决办法 :
fragmentTransaction.commit(); 改为fragmentTransaction.commitAllowingStateLoss();就可以啦
集成支付宝也是在这个界面 但是却没有闪退 为什么跳转到微信 在回来 却不能调用getFragmentManager().popBackStack() 方法了呢
仔细观察一下 在跳转微信支付之前 界面好像顿了一下 上面的状态栏也变成了微信的状态栏颜色了 但是界面还是本app的界面
debug一下 发现执行了这个方法 onSaveInstanceState 如下图
![](https://img.haomeiwen.com/i9669165/36a350800e1f733a.png)
查看源码 现在popBackStack方法中
会执行enqueueAction(OpGenerator action, boolean allowStateLoss) 方法 且allowStateLoss值为false
![](https://img.haomeiwen.com/i9669165/c09252ba393e6673.png)
再点击进去会执行checkStateLoss();方法
![](https://img.haomeiwen.com/i9669165/23f78514f2d0ff09.png)
![](https://img.haomeiwen.com/i9669165/096419b64aa54c32.png)
调用微信支付时 保存了 状态 因此mStateSaved 的值为true
![](https://img.haomeiwen.com/i9669165/e52756b35bc78f5f.png)
因此会执行checkStateLoss方法 抛出java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState异常
好了 到此结束 以上个人理解 如有出入 欢迎留言 共同学习共同进步,遇到问题不可怕 可怕的是丢掉了寻找问题根源的勇气
网友评论