android - FragmentManager - IllegalStateException - 无主机

标签 android android-fragments

我遇到了这个堆栈跟踪的非常奇怪的问题:

Fatal Exception: java.lang.IllegalStateException No host
    android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1194)
    android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1189)
    android.support.v4.app.FragmentManagerImpl.dispatchActivityCreated (FragmentManager.java:2001)
    android.support.v4.app.Fragment.performActivityCreated (Fragment.java:1976)
    android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1051)
    android.support.v4.app.FragmentManagerImpl.moveToState (FragmentManager.java:1207)
    android.support.v4.app.BackStackRecord.run (BackStackRecord.java:738)
    android.support.v4.app.FragmentManagerImpl.execPendingActions (FragmentManager.java:1572)
    android.support.v4.app.FragmentManagerImpl$1.run (FragmentManager.java:493)
    android.os.Handler.handleCallback (Handler.java:733)
    android.os.Handler.dispatchMessage (Handler.java:95)
    android.os.Looper.loop (Looper.java:146)
    android.app.ActivityThread.main (ActivityThread.java:5593)
    java.lang.reflect.Method.invokeNative (Method.java)
    java.lang.reflect.Method.invoke (Method.java:515)
    com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run (ZygoteInit.java:1283)
    com.android.internal.os.ZygoteInit.main (ZygoteInit.java:1099)
    dalvik.system.NativeStart.main (NativeStart.java)

我在多个 Android 版本(4.1.2、4.2.2、6.0)上跟踪了 4 次崩溃。我用了很多 Fragments ,这意味着我无法弄清楚抛出异常的确切位置。

代码FragmentManager :

void moveToState(int newState, int transit, int transitStyle, boolean always) {
    if (mHost == null && newState != Fragment.INITIALIZING) {
        throw new IllegalStateException("No host");
    }
    ...
}

在我看来,当没有主机时会发生这种情况 Activity属于Fragment .我 ve read this exception is sometimes thrown when调用了 setRetainInstance()`,但我根本不使用它。

感谢您的每一个建议。

最佳答案

如果您嵌套了 Fragment(父 Activity 扩展了 FragmentActivity),则使用 getChildFragmentManager() 而不是 getFragmentManager()

您还可以使用 getSupportFragmentManager()

编辑: 如果此 fragment 是另一个 fragment 的子 fragment ,则此处返回的 FragmentManager 将是父 fragment 的 getChildFragmentManager() .

注意: 返回此 fragment 的宿主对象。如果 fragment 当前未被托管,则可能返回 null。看 http://developer.android.com/reference/android/app/Fragment.html#getHost()

关于android - FragmentManager - IllegalStateException - 无主机,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33210617/

相关文章:

Android 导航组件 fragment 转换具有白色背景

android - 如何在 Android 上省略 Activity 标题

java - 未找到类 Android 支持设计 Widget NavigationView

java - 我是否需要删除以编程方式添加的 fragment

java - 更改抽屉布局项目

android - 无法使用 Otto 制作和订阅事件?

java - 如何将按钮添加到android studio中的默认 map 项目?

android - 如何从接收器类的另一个 Activity 调用方法?

android - GcmTaskService 可以运行异步任务吗?

java - 动态添加textview到CardView