如何解决Can not perform this action after onSaveInstanceState

84 篇文章 5 订阅

如何解决Can not perform this action after onSaveInstanceState

先分析问题发生原因


private void checkStateLoss() {

    if (isStateSaved()) {

        throw new IllegalStateException(

        "Can not perform this action after onSaveInstanceState");

    }

}

public boolean isStateSaved() {

    // See saveAllState() for the explanation of this.  We do this for

    // all platform versions, to keep our behavior more consistent between

    // them.

    return mStateSaved ||mStopped;

}

通过分析源码我们找到,当activity执行了onSaveInstanceState或onStop方法后,操作子fragment系统会检测当前状态并抛出异常。

解决方法:

配合Lifecycle,我们只需要重写添加:


lifecycleScope?.launchWhenResumed{

    //show fragment dialog

}

这样系统会自动在resumed后再弹出dialogfragment,也能避免Can not perform this action after onSaveInstanceState
这样即使是activity在后台情况下返回前台,也会立即弹窗。



作者:支离破碎_SuperLee
链接:https://www.jianshu.com/p/da2e50c9ca66
来源:简书
著作权归作者所有。商业转载请联系作者获得授权,非商业转载请注明出处。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值