错误提示如下:
11-27 14:47:34.983: D/CrashHandler(8105): handleException-->java.lang.IllegalStateException: No activity 11-27 14:47:34.983: D/CrashHandler(8105): 程序即将退出 11-27 14:47:34.983: D/CrashHandler(8105): main 11-27 14:47:34.990: W/System.err(8105): java.lang.IllegalStateException: No activity 11-27 14:47:35.014: D/dalvikvm(8105): GC_CONCURRENT freed 1916K, 63% free 5387K/14407K, external 6306K/7682K, paused 4ms+6ms 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1091) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1884) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1514) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl错误提示如下:
11-27 14:47:34.983: D/CrashHandler(8105): handleException-->java.lang.IllegalStateException: No activity 11-27 14:47:34.983: D/CrashHandler(8105): 程序即将退出 11-27 14:47:34.983: D/CrashHandler(8105): main 11-27 14:47:34.990: W/System.err(8105): java.lang.IllegalStateException: No activity 11-27 14:47:35.014: D/dalvikvm(8105): GC_CONCURRENT freed 1916K, 63% free 5387K/14407K, external 6306K/7682K, paused 4ms+6ms 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1091) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1086) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1884) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1514) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:947) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1104) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:682) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1467) 11-27 14:47:35.108: W/System.err(8105): at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:440) 11-27 14:47:35.108: W/System.err(8105): at android.os.Handler.handleCallback(Handler.java:587) 11-27 14:47:35.108: W/System.err(8105): at android.os.Handler.dispatchMessage(Handler.java:92) 11-27 14:47:35.108: W/System.err(8105): at android.os.Looper.loop(Looper.java:130) 11-27 14:47:35.108: W/System.err(8105): at android.app.ActivityThread.main(ActivityThread.java:3683) 11-27 14:47:35.108: W/System.err(8105): at java.lang.reflect.Method.invokeNative(Native Method) 11-27 14:47:35.108: W/System.err(8105): at java.lang.reflect.Method.invoke(Method.java:507) 11-27 14:47:35.108: W/System.err(8105): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:881) 11-27 14:47:35.108: W/System.err(8105): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:639) 11-27 14:47:35.108: W/System.err(8105): at dalvik.system.NativeStart.main(Native Method) 11-27 14:47:35.123: D/CrashHandler(8105): BOARD:CP5832 11-27 14:47:35.123: D/CrashHandler(8105): BOOTLOADER:unknown 11-27 14:47:35.123: D/CrashHandler(8105): BRAND:Coolpad
fragment 单例中调用getChildFragmentManager(),activity destory后再进入该activity fragment中,一直报java.lang.IllegalStateException: No activity
后发现https://code.google.com/p/android/issues/detail?id=42601
如下:
Sign in to add a comment Reported by [email protected], Jan 10, 2013 When a Fragment that uses its child FragmentManager (calls getChildFragmentManager()) is detached, performDestroy() calls dispatchDestroy() on the child FragmentManager, with the understanding that the child FragmentManager will no longer be used. However, the parent Fragment retains a reference to the destroyed child FragmentManager, which causes an illegal move to ACTIVITY_CREATED in the child FragmentManager if the parent Fragment is re-attached. Perhaps the child FragmentManager should be set to null after dispatchDestroy() is called, to force it to be regenerated when the parent Fragment is re-attached. An alternate best practice appears to be to not keep references to detached Fragments that have used their child FragmentManagers. This behavior has been observed in both the support v4 library and in the standard API (android.app.Fragment). The stack trace shown below belongs to API level 17 for the attached sample code. java.lang.RuntimeException: Unable to start activity ComponentInfo{edu.self/edu.self.A}: java.lang.IllegalStateException: No activity
解决方法
fragment 中@Override public void onDestroy() { super.onDestroy(); // 将fragment中的变量mChildFragmentManager清空 try { Field f = Fragment.class.getDeclaredField("mChildFragmentManager"); f.setAccessible(true); f.set(this, null); } catch (Exception e) { e.printStackTrace(); } }
.run(FragmentManager.java:440) 11-27 14:47:35.108: W/System.err(8105): at android.os.Handler.handleCallback(Handler.java:587) 11-27 14:47:35.108: W/System.err(8105): at android.os.Handler.dispatchMessage(Handler.java:92) 11-27 14:47:35.108: W/System.err(8105): at android.os.Looper.loop(Looper.java:130) 11-27 14:47:35.108: W/System.err(8105): at android.app.ActivityThread.main(ActivityThread.java:3683) 11-27 14:47:35.108: W/System.err(8105): at java.lang.reflect.Method.invokeNative(Native Method) 11-27 14:47:35.108: W/System.err(8105): at java.lang.reflect.Method.invoke(Method.java:507) 11-27 14:47:35.108: W/System.err(8105): at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:881) 11-27 14:47:35.108: W/System.err(8105): at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:639) 11-27 14:47:35.108: W/System.err(8105): at dalvik.system.NativeStart.main(Native Method) 11-27 14:47:35.123: D/CrashHandler(8105): BOARD:CP5832 11-27 14:47:35.123: D/CrashHandler(8105): BOOTLOADER:unknown 11-27 14:47:35.123: D/CrashHandler(8105): BRAND:Coolpad11-27 14:47:34.983: D/CrashHandler