致命异常:java.lang.IllegalStateException没有活动 [英] Fatal Exception: java.lang.IllegalStateException No activity
问题描述
我在crashlytics架构中获得的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
我没有发现它有任何帮助。有人可以告诉我如何跟踪它以及如何查找导致问题的活动以及可能是什么问题吗?
推荐答案
您使用错误的FragmentManager来嵌套片段。您应该使用
You are using wrong FragmentManager to nest the fragments. You should use fragmentManager instance returned by
getChildFragmentManager();
而不是使用
getSupportFragmentManager();
您可以在此处获取有关嵌套片段的更多信息: https://developer.android.com/about/versions/android-4.2.html#NestedFragments
You can get more information about nested fragments here : https://developer.android.com/about/versions/android-4.2.html#NestedFragments
您可以将片段嵌入片段中。这在多种情况下非常有用,在这些情况下,您希望将动态且可重复使用的UI组件放置到本身是动态且可重复使用的UI组件中。您可以在每个片段页面中插入片段。
You can embed fragments inside fragments. This is useful for a variety of situations in which you want to place dynamic and re-usable UI components into a UI component that is itself dynamic and re-usable. You can insert fragments into each fragment page.
要嵌套片段,只需在要添加片段的片段上调用getChildFragmentManager()即可。这将返回一个FragmentManager,您可以像通常在顶级活动中那样使用FragmentManager来创建片段事务。例如,下面的代码从现有的Fragment类中添加片段:
To nest a fragment, simply call getChildFragmentManager() on the Fragment in which you want to add a fragment. This returns a FragmentManager that you can use like you normally do from the top-level activity to create fragment transactions. For example, here’s some code that adds a fragment from within an existing Fragment class:
Fragment videoFragment = new VideoPlayerFragment();
FragmentTransaction transaction =
getChildFragmentManager().beginTransaction();
transaction.add(R.id.video_fragment, videoFragment).commit();
从嵌套片段中,可以通过调用getParentFragment()获得对父片段的引用。
From within a nested fragment, you can get a reference to the parent fragment by calling getParentFragment().
这篇关于致命异常:java.lang.IllegalStateException没有活动的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!