java - 致命异常 : java. lang.IllegalStateException 无 Activity

标签 java android crashlytics

我在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/

相关文章:

java - liferay 服务器集群如何在已安装的卷上使用一个共享 lucene 索引?

java - 如何使用 JCR 中的 SQL 从子名中检索父名

java - 按钮在第一个和最后一个索引处不起作用?

logging - 有没有办法将日志事件从 crashlytics/fabric 获取到 ELK 或像 datadog 这样的 SaaS 指标平台?

java - ParseUser.logout() 的错误行为

java - 整数的最小值

android - 在 Android ListView 中查看不重绘

android - 无法将 @drawable/转换为可绘制对象

android - Firebase/Crashlytics 仪表板未显示任何 Android 测试崩溃

ios - Crashlytics forceCrash 不工作