我在crashlytics fabric中得到的Stacktrace如下,
Fatal Exception: java.lang.IllegalStateException: No activity
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1058)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1053)
at android.app.FragmentManagerImpl.dispatchActivityCreated(FragmentManager.java:1862)
at android.app.Fragment.performActivityCreated(Fragment.java:1724)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:915)
at android.app.FragmentManagerImpl.moveToState(FragmentManager.java:1071)
at android.app.BackStackRecord.run(BackStackRecord.java:684)
at android.app.FragmentManagerImpl.execPendingActions(FragmentManager.java:1456)
at android.app.FragmentManagerImpl$1.run(FragmentManager.java:444)
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:5398)
at java.lang.reflect.Method.invokeNative(Method.java)
at java.lang.reflect.Method.invoke(Method.java:515)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:864)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:680)
at dalvik.system.NativeStart.main(NativeStart.java)
Show all 74 Threads
我发现它没有任何帮助。谁能告诉我如何跟踪它以及如何找到导致问题的 Activity 以及可能是什么问题?
最佳答案
您使用了错误的 FragmentManager 来嵌套 fragment 。您应该使用由
返回的 fragmentManager 实例getChildFragmentManager();
而不是使用
getSupportFragmentManager();
您可以在此处获得有关嵌套 fragment 的更多信息:https://developer.android.com/about/versions/android-4.2.html#NestedFragments
您可以在 fragment 中嵌入 fragment 。这对于您想要将动态和可重用的 UI 组件放置到本身是动态的和可重用的 UI 组件的各种情况很有用。您可以将 fragment 插入到每个 fragment 页面中。
要嵌套 fragment ,只需对要在其中添加 fragment 的 fragment 调用 getChildFragmentManager() 即可。这将返回一个 FragmentManager,您可以像往常一样从顶级 Activity 中使用它来创建 fragment 事务。例如,下面是一些从现有 Fragment 类中添加 fragment 的代码:
Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction =
getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();
在嵌套 fragment 中,您可以通过调用 getParentFragment() 获取对父 fragment 的引用。
关于java - 致命异常 : java. lang.IllegalStateException 无 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46157134/