应用程序崩溃,当我打开服务器RPC时,以及RPC正在进行时,我将应用程序放在后台。同时,当RPC从服务器获得响应时,它从堆栈中弹出一个片段。在弹出片段时,应用程序崩溃。 我已阅读有关创建WeakReference的信息,如果活动被破坏,它将为空。但不知道如何实施这种情况。当从栈中弹出一个片段时,应用程序在后台崩溃
以下是我的代码:
private void showFragment(SherlockFragment fragment) {
FragmentManager fm = getSupportFragmentManager();
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
FragmentTransaction ft = fm.beginTransaction();
ft.replace(R.id.content, fragment);
ft.commit();
}
我得到一个崩溃上执行以下行:
fm.popBackStack(null, FragmentManager.POP_BACK_STACK_INCLUSIVE);
堆栈跟踪:
01-15 16:37:44.435: E/AndroidRuntime(28049): FATAL EXCEPTION: main
01-15 16:37:44.435: E/AndroidRuntime(28049): java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
01-15 16:37:44.435: E/AndroidRuntime(28049): at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1299)
01-15 16:37:44.435: E/AndroidRuntime(28049): at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1310)
01-15 16:37:44.435: E/AndroidRuntime(28049): at android.support.v4.app.FragmentManagerImpl.popBackStack(FragmentManager.java:452)
01-15 16:37:44.435: E/AndroidRuntime(28049): at com.druva.inSync.ValidationActivity$2.run(ValidationActivity.java:93)
搜索'无法执行onSaveInstanceState'后这个动作,你会得到很多很多的答案, –
或只需按照相关的问题 –
我做检查相关问题。我尝试使用“commitAllowingStateLoss”,我也试着检查“activity.isFinishing”。该控件不会去'isFinishing',并且因为我在ft.commit()之前发生崩溃,所以commitAllowingStateLoss也没有帮助。 –