简体   繁体   中英

Fatal Exception: java.lang.IllegalStateException No activity

The Stacktrace I got in crashlytics fabric is as follows,

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

I am not finding it helpful in any way. Can anybody tell me how can I trace it and how to find which activity is causing problem and what may be the problem?

You are using wrong FragmentManager to nest the fragments. You should use fragmentManager instance returned by

getChildFragmentManager();  

instead of using

getSupportFragmentManager();

You can get more information about nested fragments here : https://developer.android.com/about/versions/android-4.2.html#NestedFragments

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.

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();

From within a nested fragment, you can get a reference to the parent fragment by calling getParentFragment().

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM