android中使用了fragment来切换页面,跳转后存在返回动作,但是总感觉返回的时候响应很慢,请问哪位知道如何解决?
//切换frament的部分代码
FragmentTransaction fti = fManager.beginTransaction();
fManager.beginTransaction().replace(R.id.centerFragment, ccfg).commitNowAllowingStateLoss();
//返回时使用的代码
fManager.popBackStack();
java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1832)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1850)
at android.support.v4.app.FragmentManagerImpl.popBackStack(FragmentManager.java:769)
原因: 不能在onSaveInstanceState方法之后调用popBackStack。 onSaveInstanceState方法是在该Activity即将被销毁前调用,来保存Activity数据的,如果在保存玩状态后再给它添加Fragment就会出错。在项目中出现该异常是由于:将第三方支付封装在fragment,当我点击微信支付的返回键时,是通过本地广播去拦截 ‘取消支付’ 的消息,拦截到该消息时~将该支付fragment进行popBackStack操作,结果就报错了
解决:
try去捕捉异常,当activity处于运行状态的时候,再去判断fragment栈中是否存在该fragment,再执行popBackStack操作