java.lang.IllegalStateException: No host

Logcat打印出的错误提示如下:

java.lang.IllegalStateException: No host
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1235)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1230)
                                                                            at android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:2042)
                                                                            at android.support.v4.app.Fragment.performActivityCreated(Fragment.java:1976)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1092)
                                                                            at android.support.v4.app.FragmentManagerImpl.moveToState(FragmentManager.java:1248)
                                                                            at android.support.v4.app.BackStackRecord.run(BackStackRecord.java:738)
                                                                            at android.support.v4.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1613)
                                                                            at android.support.v4.app.FragmentManagerImpl$1.run(FragmentManager.java:517)
                                                                            at android.os.Handler.handleCallback(Handler.java:733)
                                                                            at android.os.Handler.dispatchMessage(Handler.java:95)
                                                                            at android.os.Looper.loop(Looper.java:136)
                                                                            at android.app.ActivityThread.main(ActivityThread.java:5065)
                                                                            at java.lang.reflect.Method.invokeNative(Native Method)
                                                                            at java.lang.reflect.Method.invoke(Method.java:515)
                                                                            at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run

错误信息截图如下:



解决方法是重写Fragment的onDetach()方法

 @Override
 public void onDetach() {
        super.onDetach();
        try {
            Field childFragmentManager = Fragment.class.getDeclaredField("mChildFragmentManager");
            childFragmentManager.setAccessible(true);
            childFragmentManager.set(this, null);
        } catch (NoSuchFieldException e) {
            throw new RuntimeException(e);
        } catch (IllegalAccessException e) {
            throw new RuntimeException(e);
        }
 }
相关文章
相关标签/搜索