欢迎使用CSDN-markdown编辑器
来源:互联网 发布:淘宝图防盗图怎么设置 编辑:程序博客网 时间:2024/06/05 22:57
Can not perform this action after onSaveInstanceState异常的解决
出现场景
Activity A为MainActivity,启动模式为SingleTask。从Activity A进入Activity B,再从Activity B 跳转到Activity C,最后跳回Activity A并使用EventBus切换Activity A中的Fragment时出现。
原因
刚开始遇到这个问题时并不了解原因,直到搜索到了这篇文章
Fragment全解析系列(一):那些年踩过的坑
了解到在离开当前Activity等情况下,系统会调用onSaveInstanceState()保存当前Activity的状态、数据等。直到再回到该Activity之前(onResume()之前),执行Fragment事务,就会抛出该异常!(一般是其他Activity的回调让当前页面执行事务的情况,会引发该问题)。
解决方案
在重新回到该Activity的时候(onResumeFragments()或onPostResume()),再执行该事务,配合数据保存,可以做到事务的完整性,不会丢失事务。
@Override// 如果是在Fragment内, 则复写onResumeFragments()改为onResume()即可protected void onResumeFragments() { super.onResumeFragments(); mIsSaved = false; if (mTransactionEvent != null) { // 这里执行事务 mTransactionEvent = null; }}@Overrideprotected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mIsSaved = true;}@Subscribe(sticky = true) // sticky事件可以保证即使Activity被强杀,也会在恢复后拿到数据public void onEvent(TransactionEvent event) { if (mIsSaved) { mTransactionEvent = event; } else { // 这里执行事务 }}
阅读全文
0 0
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- 欢迎使用CSDN-markdown编辑器
- Lua 基础之面向对象编程
- QT用Cmake转VS之后编译出现缺少头文件。。
- (转载)Java泛型
- vs2013MFC中静态文本框中的鼠标响应事件
- HDU4857 逃生(拓扑排序)
- 欢迎使用CSDN-markdown编辑器
- Spring Boot干货系列:(十)开发常用的热部署方式汇总
- C++ 模板基础(一)
- 数组、二维数组与指针
- Linux环境下修改文件的权限
- HTML标签嵌套规则简单整理
- Hadoop之Partitioner与自定义Partitioner(笔记9)
- MyEclipse反编译插件安装,类似IDEA一样可以直接看到源码
- PL/SQL:异常处理