获取异常“IllegalStateException:onSaveInstanceState后无法

获取异常“IllegalStateException:onSaveInstanceState后无法执行此操作”

我有一个LiveAndroid应用程序,我从市场上收到了下面的堆栈跟踪,我不知道为什么它在应用程序代码中没有发生,但它是由应用程序中的一些或另一个事件引起的(假设)

我没有使用片段,仍然有FragmentManager的引用。如果有任何机构能够揭露一些隐藏的事实,以避免这类问题:

java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState

at android.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1109)

at android.app.FragmentManagerImpl.popBackStackImmediate(FragmentManager.java:399)

at android.app.Activity.onBackPressed(Activity.java:2066)

at android.app.Activity.onKeyDown(Activity.java:1962)

at android.view.KeyEvent.dispatch(KeyEvent.java:2482)

at android.app.Activity.dispatchKeyEvent(Activity.java:2274)

at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1668)

at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)

at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)

at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)

at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)

at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)

at android.view.ViewGroup.dispatchKeyEvent(ViewGroup.java:1112)

at com.android.internal.policy.impl.PhoneWindow$DecorView.superDispatchKeyEvent(PhoneWindow.java:1720)

at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1258)

at android.app.Activity.dispatchKeyEvent(Activity.java:2269)

at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1668)

at android.view.ViewRoot.deliverKeyEventPostIme(ViewRoot.java:2851)



莫回无
浏览 637回答 3
3回答

拉丁的传说

这是我迄今遇到的最愚蠢的错误。我有一个Fragment应用程序工作完美API<11,和Force Closing在……上面API>11.我真的不知道他们在里面变了什么Activity调用中的生命周期saveInstance但我就是这样解决这个问题的:@Overrideprotected&nbsp;void&nbsp;onSaveInstanceState(Bundle&nbsp;outState)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;//No&nbsp;call&nbsp;for&nbsp;super().&nbsp;Bug&nbsp;on&nbsp;API&nbsp;Level&nbsp;>&nbsp;11.}我只是不打电话给.super()一切都很好。我希望这能帮你节省点时间。编辑:经过进一步的研究,这是一个已知的虫虫在一揽子支援计划中。如果您需要保存实例,并向您的outState&nbsp;Bundle您可以使用以下内容:@Overrideprotected&nbsp;void&nbsp;onSaveInstanceState(Bundle&nbsp;outState)&nbsp;{ &nbsp;&nbsp;&nbsp;&nbsp;outState.putString("WORKAROUND_FOR_BUG_19917_KEY",&nbsp;"WORKAROUND_FOR_BUG_19917_VALUE"); &nbsp;&nbsp;&nbsp;&nbsp;super.onSaveInstanceState(outState);}EDIT 2:如果您试图在您的Activity在背景中消失了。为了避免这种情况,您应该使用commitAllowingStateLoss()EDIT 3:根据我的记忆,上述解决方案修复了早期Support.v4库中的问题。但如果你还对此有异议必亦读@AlexLockwood的博客:碎片交易和活动状态损失博客文章的摘要(但我强烈建议您阅读它):绝不可能&nbsp;commit()之后的交易onPause()前蜂窝,和onStop()后蜂窝在内部提交事务时要小心Activity生命周期方法使用&nbsp;onCreate(),&nbsp;onResumeFragments()和onPostResume()避免在异步回调方法中执行事务使用commitAllowingStateLoss()只是作为最后的手段

SMILET

如果尝试在片段活动之后执行片段转换,就会出现这样的异常。onSaveInstanceState()会被打电话。这会发生的原因之一是,如果你离开AsyncTask(或Thread)当活动停止时运行。之后的任何过渡onSaveInstanceState()如果系统恢复资源活动并在以后重新创建该活动,则调用该活动可能会丢失。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Android