java.lang.RuntimeException: Unable to destroy activity {com.tvie.xj.ivideo.pad/com.tvie.ivideo.pad.home.HomeActivity}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState
11-26 14:18:16.160: E/AndroidRuntime(17969): FATAL EXCEPTION: main 11-26 14:18:16.160: E/AndroidRuntime(17969): java.lang.RuntimeException: Unable to destroy activity {com.tvie.xj.ivideo.pad/com.tvie.ivideo.pad.home.HomeActivity}: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3499) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.app.ActivityThread.handleDestroyActivity(ActivityThread.java:3517) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:3717) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.app.ActivityThread.access$700(ActivityThread.java:141) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1262) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.os.Handler.dispatchMessage(Handler.java:99) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.os.Looper.loop(Looper.java:137) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.app.ActivityThread.main(ActivityThread.java:5103) 11-26 14:18:16.160: E/AndroidRuntime(17969): at java.lang.reflect.Method.invokeNative(Native Method) 11-26 14:18:16.160: E/AndroidRuntime(17969): at java.lang.reflect.Method.invoke(Method.java:525) 11-26 14:18:16.160: E/AndroidRuntime(17969): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:737) 11-26 14:18:16.160: E/AndroidRuntime(17969): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:553) 11-26 14:18:16.160: E/AndroidRuntime(17969): at dalvik.system.NativeStart.main(Native Method) 11-26 14:18:16.160: E/AndroidRuntime(17969): Caused by: java.lang.IllegalStateException: Can not perform this action after onSaveInstanceState 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.support.v4.app.FragmentManagerImpl.checkStateLoss(FragmentManager.java:1327) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.support.v4.app.FragmentManagerImpl.enqueueAction(FragmentManager.java:1338) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.support.v4.app.BackStackRecord.commitInternal(BackStackRecord.java:595) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.support.v4.app.BackStackRecord.commit(BackStackRecord.java:574) 11-26 14:18:16.160: E/AndroidRuntime(17969): at com.tvie.ivideo.pad.main.MainFragment.onDestroyView(MainFragment.java:106) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.support.v4.app.Fragment.performDestroyView(Fragment.java:1665) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:980) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1088) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1070) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.support.v4.app.FragmentManagerImpl.dispatchDestroy(FragmentManager.java:1898) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.support.v4.app.FragmentActivity.onDestroy(FragmentActivity.java:324) 11-26 14:18:16.160: E/AndroidRuntime(17969): at com.tvie.base.ui.BaseActivity.onDestroy(BaseActivity.java:26) 11-26 14:18:16.160: E/AndroidRuntime(17969): at com.tvie.ivideo.pad.home.HomeActivity.onDestroy(HomeActivity.java:207) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.app.Activity.performDestroy(Activity.java:5302) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.app.Instrumentation.callActivityOnDestroy(Instrumentation.java:1117) 11-26 14:18:16.160: E/AndroidRuntime(17969): at android.app.ActivityThread.performDestroyActivity(ActivityThread.java:3486) 11-26 14:18:16.160: E/AndroidRuntime(17969): ... 12 more
參考鏈接:
問題原因:
@Override public void onDestroyView() { Logger.v(TAG, "@onDestroyView. remove fragments. by FragmentTransaction."); super.onDestroyView(); FragmentTransaction trac = getFragmentManager().beginTransaction(); trac.remove(hotFragment); trac.remove(channelFragment); trac.remove(recmdFragment); trac.commit(); hotFragment = null; channelFragment = null; recmdFragment = null; linearLayout1 = null; }
問題出在上面代碼片段中的trac.commit()語句!
把onDestroyView方法去掉就OK!