Fragment的commit方法和commitAllowingStateLoss方法的区别
来源:互联网 发布:淘宝店快递发货流程 编辑:程序博客网 时间:2024/06/06 00:42
几天用fragment的时候出现了一个bug,程序直接crash掉,抛出"can not perform this action after onSaveInstanceState" 异常,原来是FragmentTransaction的commit方法抛出的,最后将commit方法改为commitAllowingStateLoss方法,解决了问题。
那么这两个方法有什么区别呢?查看源码得知,commit和commitAllowingStateLoss方法最终都调用了BackStackRecord类的commitInternal(boolean allowStateLoss)方法,allowStateLoss:是否允许fragment的状态丢失,commit传的是false,commitAllowingStateLoss传的是true(即允许fragment的状态丢失),如果使用commit方法,系统会调用checkStateLoss()方法检查状态,如果已经保存就会抛出以下异常:
private void checkStateLoss() { if (mStateSaved) { throw new IllegalStateException( "Can not perform this action after onSaveInstanceState"); }
1 0
- Fragment的commit方法和commitAllowingStateLoss方法的区别
- commitallowingstateloss 和commit的区别
- commitallowingstateloss 和commit的区别
- FragmentTransaction的commit和commitAllowingStateLoss的区别
- FragmentTransaction的commit和commitAllowingStateLoss的区别
- FragmentTransaction的commit和commitAllowingStateLoss的区别
- FragmentTransaction的commit和commitAllowingStateLoss的区别
- FragmentTransaction的commit和commitAllowingStateLoss的区别
- FragmentTransaction的commit和commitAllowingStateLoss的区别
- FragmentTransaction的commit和commitAllowingStateLoss的区别
- FragmentTransaction的commit和commitAllowingStateLoss的区别
- FragmentTransaction的commit和commitAllowingStateLoss的区别
- 源码分析commitAllowingStateLoss() 和commit()的区别
- 源码分析commitAllowingStateLoss() 和commit()的区别(挑重点去知道)
- SharedPreference.Editor的apply()方法和commit()方法的区别
- Fragment commit 替换成 commitAllowingStateLoss()
- commit()和commitallowingstateloss()
- SharedPreference.Editor的apply和commit方法的区别
- 方法区和运行时常量池溢出
- 快速排序算法——以数组最后一个元素为主元
- C# 异步线程任务使用Task await
- 在阿里云ubuntu上搭建 tomcat8网页服务器
- DS 双链表的实现
- Fragment的commit方法和commitAllowingStateLoss方法的区别
- 基于Tomcat8.5.8的solr4.8.0的配置
- PAT1011 World Cup Betting
- ffmpeg frei0r filter 参数及效果
- 蓝桥杯-BASIC题 (持续更新)
- QT高级UI篇重写自己想要的控件以QLabel为列实现旋转,放大,缩小
- 用递归实现字符串的逆序
- IE10不显示swfupload上传附件按钮问题
- [js点滴]JavaScript基础正则详解03