我从我的应用程序中获取用户报告,提供以下异常:
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.onKeyUp(Activity.java:2044)
at android.view.KeyEvent.dispatch(KeyEvent.java:2529)
at android.app.Activity.dispatchKeyEvent(Activity.java:2274)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1803)
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:1855)
at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1277)
at android.app.Activity.dispatchKeyEvent(Activity.java:2269)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1803)
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.widget.TabHost.dispatchKeyEvent(TabHost.java:297)
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:1855)
at com.android.internal.policy.impl.PhoneWindow.superDispatchKeyEvent(PhoneWindow.java:1277)
at android.app.Activity.dispatchKeyEvent(Activity.java:2269)
at com.android.internal.policy.impl.PhoneWindow$DecorView.dispatchKeyEvent(PhoneWindow.java:1803)
at android.view.ViewRoot.deliverKeyEventPostIme(ViewRoot.java:2880)
at android.view.ViewRoot.handleFinishedEvent(ViewRoot.java:2853)
at android.view.ViewRoot.handleMessage(ViewRoot.java:2028)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:132)
at android.app.ActivityThread.main(ActivityThread.java:4028)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:491)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:844) …Run Code Online (Sandbox Code Playgroud) android illegalstateexception android-fragments android-viewpager fragmenttransaction
我很欣赏有关轮换更改的AsyncTask的大量帖子.使用兼容性lib并试图解雇DialogFragmentin 时,我有以下问题onPostExecute.
我有一个片段,它触发AsyncTask显示进度DialogFragment,然后onPostExecute解散对话框然后可能抛出另一个DialogFragment.
如果在显示进度对话框时我把应用程序放到后台我得到了以下片段:
1) onPause
2) onSaveInstanceState
3)onPostExecute我尝试解雇并调用对话框.
我得到一个IllegalStateException因为我正在尝试在活动保存状态时有效地提交事务并且我理解这一点.
在轮换中,我假设(可能不正确)onPostExecute在重新创建活动之前我不会得到.但是,当把应用程序放到后台时,我假设(肯定是错误的)onPostExectute在片段/活动暂停时不会被调用.
我的问题是,我的解决方案是简单地检测onPostExecute到片段/活动暂停并简单地执行我需要做的事情onResume吗?对我来说似乎有些难看.
提前谢谢,彼得.
编辑1
需要支持2.1及以上版本
编辑2
我已经考虑过使用对话框FragmentTransaction:add,FragmentTransaction:commitAllowingStateLoss但这并非没有问题.
android android-lifecycle android-asynctask android-fragments
android ×2