开发中碰到的问题:IllegalStateException: Can not perform this action after onSaveInstanceState
2016-05-27 18:37
543 查看
今天使用Fragment的时候,出现了这个错误 IllegalStateException: Can not perform this action after onSaveInstanceState:
E/AndroidRuntime(12747): Caused by: java.lang.IllegalStateException: Can not perform
this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1314)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1325)
是在使用FragmentTransition的 commit方法添加一个Fragment的时候出现的,后来在官网找到了相关的
说明:http://developer.android.com/reference/android/app/FragmentTransaction.html#commitAllowingStateLoss()
public abstract int commitAllowingStateLoss
Added in
API level 11
Like
be lost if the activity needs to later be restored from its state, so this should only be used for cases where it is okay for the UI state to change unexpectedly on the user.
大致意思是说我使用的 commit方法是在Activity的onSaveInstanceState()之后调用的,这样会出错,因为
onSaveInstanceState方法是在该Activity即将被销毁前调用,来保存Activity数据的,如果在保存玩状态后
再给它添加Fragment就会出错。解决办法就是把commit()方法替换成 commitAllowingStateLoss()就行
了,其效果是一样的。
E/AndroidRuntime(12747): Caused by: java.lang.IllegalStateException: Can not perform
this action after onSaveInstanceState
at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1314)
at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1325)
是在使用FragmentTransition的 commit方法添加一个Fragment的时候出现的,后来在官网找到了相关的
说明:http://developer.android.com/reference/android/app/FragmentTransaction.html#commitAllowingStateLoss()
public abstract int commitAllowingStateLoss
()
Added inAPI level 11
Like
commit()but allows the commit to be executed after an activity's state is saved. This is dangerous because the commit can
be lost if the activity needs to later be restored from its state, so this should only be used for cases where it is okay for the UI state to change unexpectedly on the user.
大致意思是说我使用的 commit方法是在Activity的onSaveInstanceState()之后调用的,这样会出错,因为
onSaveInstanceState方法是在该Activity即将被销毁前调用,来保存Activity数据的,如果在保存玩状态后
再给它添加Fragment就会出错。解决办法就是把commit()方法替换成 commitAllowingStateLoss()就行
了,其效果是一样的。
相关文章推荐
- MAC下配置PHPStorm环境
- 杂项
- python多进程编程
- JNI实现简单HelloWorld的Demo
- 内存四区的笔记
- kali实战-缓冲区溢出
- HashMap的实现原理
- Codeforces Round #351 (VK Cup 2016 Round 3, Div. 2 Edition) C - Bear and Colors
- Java学习笔记之设计模式原则
- R基础(个人笔记)
- 海盗分椰子吃
- SharedPreferences工具类(2种)
- CMTime详解-AVFoundation视频操作必备基础
- 数据类型的笔记
- zynq 7000 通过 ULPI 访问 usb phy 寄存器
- 获取百分数
- Linux磁盘与文件系统Ext2
- HBase Rowkey的散列与预分区设计
- android退出程序
- 四,命名规则