李堇 2023-07-13 17:44 采纳率: 48.7%
浏览 20
已结题

android 使用popBackStack返回响应感觉很慢

android中使用了fragment来切换页面,跳转后存在返回动作,但是总感觉返回的时候响应很慢,请问哪位知道如何解决?

//切换frament的部分代码
FragmentTransaction fti = fManager.beginTransaction();
fManager.beginTransaction().replace(R.id.centerFragment, ccfg).commitNowAllowingStateLoss();

//返回时使用的代码
fManager.popBackStack();
  • 写回答

1条回答 默认 最新

  • CSDN-Ada助手 CSDN-AI 官方账号 2023-07-13 20:11
    关注
    • 文章:Android Fragment回退栈管理(popBackStack) 中也许有你想要的答案,请看下吧
    • 除此之外, 这篇博客: Android日常开发收集的Tips中的 6.调用fragment的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操作

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 8月2日
  • 创建了问题 7月13日