Fragment坑之Can not perform this action after onSaveInstanceState
来源:互联网 发布:java多线程售票系统 编辑:程序博客网 时间:2024/06/07 20:40
该情况一般发生在当前Activity等,系统会调用onSaveInstanceState()帮你保存当前Activity的状态、数据等,直到再回到该Activity之前(onResume()之前),你执行Fragment事务,就会抛出该异常!(一般是其他Activity的回调让当前页面执行事务的情况,会引发该问题)。曾在项目管理我的应用栏,三个按钮控制我的,更新,卸载栏,分别跳转不同fragment鬼畜发生过。当时暴力try-catch解决。。试过网路上所说的commitAllowingStateLoss()方法提交,但是会产生新的问题
后面查到一种新的方法:在重新回到该Activity的时候(onResumeFragments()或onPostResume()),再执行该事务,配合数据保存,可以做到事务的完整性,不会丢失事务。
代码如下
@Override // 如果是在Fragment内, 则复写onResumeFragments()改为onResume()即可 protected void onResumeFragments() { super.onResumeFragments(); mIsSaved = true; if (mTransactionEvent != null) { // 这里执行事务 mTransactionEvent = null; } } @Override protected void onSaveInstanceState(Bundle outState) { super.onSaveInstanceState(outState); mIsSaved = false; } @Subscribe(sticky = true) // sticky事件可以保证即使Activity被强杀,也会在恢复后拿到数据 public void onEvent(TransactionEvent event) { if (mIsSaved) { // 这里执行事务 } else { mTransactionEvent = event; } }(ps:以EventBus通知执行事务为例)
0 0
- Fragment坑之Can not perform this action after onSaveInstanceState
- Fragment系列之Can not perform this action after onSaveInstanceState
- 解决Fragment IllegalStateException: Can not perform this action after onSaveInstanceState
- Fragment IllegalStateException: Can not perform this action after onSaveInstanceState
- Fragment 出现Can not perform this action after onSaveInstanceState
- fragment 异常IllegalStateException: Can not perform this action after onSaveInstanceState
- Can not perform this action after onSaveInstanceState(fragment异常)
- Fragment错误:IllegalStateException: Can not perform this action after onSaveInstanceState
- Fragment Or DialogFragment Can not perform this action after onSaveInstanceState
- Fragment Can not perform this action after onSaveInstanceState
- Fragment Or DialogFragment Can not perform this action after onSaveInstanceState
- Fragment中出现Can not perform this action after onSaveInstanceState
- 解决fragment错误 Can not perform this action after onSaveInstanceState
- fragment/dialogfragment异常:Can not perform this action after onSaveInstanceState
- fragment使用时 Can not perform this action after onSaveInstanceState
- Fragment异常:Can not perform this action after onSaveInstanceState
- Fragment Can not perform this action after onSaveInstanceState
- 解决Fragment中:Can not perform this action after onSaveInstanceState
- 添加时间联系人添加两次,两次请求
- [LeetCode]501. Find Mode in Binary Search Tree
- 第十三周:( LeetCode583) Delete Operation for Two Strings(c++)
- 仿微信:Activity跟随手指滑动效果SlideFinishActivity
- Android开发之RecyclerView的基本使用(实现常用的4种效果)
- Fragment坑之Can not perform this action after onSaveInstanceState
- java虚拟机(一知半解)
- 数据结构——树形结构概念
- for循环的三种方式
- HDU 3951 Coin Game
- Apache-NiFi授权与用户认证
- dokuwiki常用操作
- 蓝桥杯之二阶魔方旋转(第二种方法)
- java后台逻辑和SQL查询逻辑的思考