I recently changed my app to target API Level 28 and also started using androidx instead of support libraries. After the change, I'm noticing a crash that has the following traceback
Fatal Exception: java.lang.IllegalStateException: Failure saving state: active MyFragment{22caf6fc (04a7bbf5-8806-4a45-a25d-616ed244bf18) id=0x7f1000ff} was removed from the FragmentManager
at androidx.fragment.app.FragmentManagerImpl.saveAllState(FragmentManagerImpl.java:2301)
at androidx.fragment.app.FragmentController.saveAllState(FragmentController.java:150)
at androidx.fragment.app.FragmentActivity.onSaveInstanceState(FragmentActivity.java:496)
at androidx.appcompat.app.AppCompatActivity.onSaveInstanceState(AppCompatActivity.java:510)
at com.company.utils.MyAppCompatActivity.onSaveInstanceState(MyAppCompatActivity.java:161)
at android.app.Activity.performSaveInstanceState(Activity.java:1311)
at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1288)
at android.app.ActivityThread.callCallActivityOnSaveInstanceState(ActivityThread.java:4166)
at android.app.ActivityThread.performStopActivityInner(ActivityThread.java:3577)
at android.app.ActivityThread.handleStopActivity(ActivityThread.java:3633)
at android.app.ActivityThread.access$1300(ActivityThread.java:164)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1491)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:160)
at android.app.ActivityThread.main(ActivityThread.java:5541)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:964)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:759)
All my activities are extending from a base activity MyAppCompatActivity
which extends from AppCompatActivity
. And in the onSaveInstanceState
method of MyAppCompatActivity
, I have a few log lines there. I have three fragments in this activity implemented under a ViewPager with FragmentStatePageAdapter
and the activity itself is not overriding onSaveInstanceState
method.
I went through a few SO posts close to this such as this one and this one, but it looks as if it's happening when we're using FragmentManager
's methods to manage the fragments ourselves rather than using a ViewPagerAdapter handle it. I'm not doing that and the closest thing that I'm doing away from the usual flow is overriding FragmentStatePageAdapter
's methods instantiateItem
and destroyItem
to help me have a method to get a fragment's reference in the code as given in this SO answer.
Which Fragment library version did you use? There is an issue with 1.1.0-alpha01.
I am using the latest gradle as below
implementation 'androidx.core:core:1.1.0-alpha03'
I have compared crashing fragment with other fragment code and found the difference as below: Crashing fragment has method setRetainInstance(true); inside onCreateView() as shown in below snippet.
@Override
public View onCreateView(LayoutInflater inflater, ViewGroup container, Bundle savedInstanceState) {
setRetainInstance(true);
}
I come across the link which says not to use setRetainInstance : setRetainInstance - This can only be used with fragments not in the back stack
I removed the setRetainInstance(true) for crashing fragmnet; It's working now.
How to replicate this issue: MainActivity --> HomeFragment --> FirstFragment(crashing fragment) --> HomeFragment
MainActivity loads with HomeFragment which replaced by FirstFragment and then going back to HomeFragment. Then moving my app to background and crash happens with below exception.
java.lang.IllegalStateException: Failure saving state: active
FirstFragment{fd50037 (4a8b618e-a0a8-45d0-aa37-ba08393b8f68)
id=0x7f08009c} was removed from the FragmentManager
Add a dependency in build.gradle app
implementation 'androidx.preference:preference:1.1.0-alpha05'
it will works for me, thanks to
Refer this - https://issuetracker.google.com/issues/119256498
my issues are in run time I'm giving permission to camera and storage after that seconds the camera is open my app is crashed. I use this my issue is solved
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With