Fixed
Status Update
Comments
b9...@gmail.com <b9...@gmail.com> #2
It could easy to reproduce when turning on "Don't keep activities".
il...@google.com <il...@google.com>
il...@google.com <il...@google.com>
ap...@google.com <ap...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-master-dev
commit ba0c19707915ff87d9cac2089fcd166bb5cca17d
Author: Ian Lake <ilake@google.com>
Date: Wed Nov 14 16:20:28 2018
Set the correct FragmentManager on active Fragments
All active Fragments should have the correct
FragmentManager set instead of always using the
Activity's FragmentManager.
While added Fragments have their FragmentManager
set correctly in moveToState(), active Fragments
weren't being set correctly, causing issues when
attempting to save the state of the FragmentManager.
Test: new FragmentLifecycleTest
BUG: 119256498
Change-Id: I830f729d93f00859509a0844fae19752342e6ccc
M fragment/src/androidTest/java/androidx/fragment/app/FragmentLifecycleTest.java
M fragment/src/main/java/androidx/fragment/app/FragmentManagerImpl.java
M fragment/src/main/java/androidx/fragment/app/FragmentState.java
https://android-review.googlesource.com/826954
https://goto.google.com/android-sha1/ba0c19707915ff87d9cac2089fcd166bb5cca17d
Branch: androidx-master-dev
commit ba0c19707915ff87d9cac2089fcd166bb5cca17d
Author: Ian Lake <ilake@google.com>
Date: Wed Nov 14 16:20:28 2018
Set the correct FragmentManager on active Fragments
All active Fragments should have the correct
FragmentManager set instead of always using the
Activity's FragmentManager.
While added Fragments have their FragmentManager
set correctly in moveToState(), active Fragments
weren't being set correctly, causing issues when
attempting to save the state of the FragmentManager.
Test: new FragmentLifecycleTest
BUG: 119256498
Change-Id: I830f729d93f00859509a0844fae19752342e6ccc
M fragment/src/androidTest/java/androidx/fragment/app/FragmentLifecycleTest.java
M fragment/src/main/java/androidx/fragment/app/FragmentManagerImpl.java
M fragment/src/main/java/androidx/fragment/app/FragmentState.java
b9...@gmail.com <b9...@gmail.com> #4
Thanks Ian! Looking forward to a new alpha release ASAP rather than monthly release.😅
il...@google.com <il...@google.com>
ni...@gmail.com <ni...@gmail.com> #5
Thanks for fixing this!
b9...@gmail.com <b9...@gmail.com> #6
Wondering is there any release plan?
il...@google.com <il...@google.com> #7
Fragments 1.1.0-alpha02 is out now with this fix.
ma...@marcardar.com <ma...@marcardar.com> #8
Does Preferences also depend on Fragments? In which case when will that be updated to 1.1.0-alpha02? Or is the recommended practice to specify both Preferences and Fragments in build.gradle so that we can force Fragments 1.1.0-alpha02?
il...@google.com <il...@google.com> #9
Re #8 - yes, if you need a specific version of Fragments, you should specify both Preferences and Fragments in your build.gradle.
The release schedule of AndroidX components is completely independent of one another, so Preferences will only get a new version when there's something new to release in Preferences.
The release schedule of AndroidX components is completely independent of one another, so Preferences will only get a new version when there's something new to release in Preferences.
ma...@marcardar.com <ma...@marcardar.com> #10
So, in general it sounds like if an androidx dependency (such as preference) is added to build.gradle, then any dependencies of that (e.g. fragment) should also be explicitly added so that the specific version can be specified. Is that right?
In other words, when we explicitly include preference-1.1.0-alpha01 we need to be aware that the fragment-alpha1.1.0-alpha01 is automatically being brought in and so might affect the fragment behaviour. Sorry, I know this is rather OT.
In other words, when we explicitly include preference-1.1.0-alpha01 we need to be aware that the fragment-alpha1.1.0-alpha01 is automatically being brought in and so might affect the fragment behaviour. Sorry, I know this is rather OT.
ni...@gmail.com <ni...@gmail.com> #11
Thanks, fix confirmed
mk...@gmail.com <mk...@gmail.com> #12
alpha02 version of fragments didn't fix this for me. Is there another solution?
il...@google.com <il...@google.com> #13
Re #12 - you're most likely hitting https://issuetracker.google.com/issues/120814739 - a related but separate issue fixed for alpha03
ph...@gmail.com <ph...@gmail.com> #14
Run
ph...@gmail.com <ph...@gmail.com> #15
Run
ph...@gmail.com <ph...@gmail.com> #16
Run
lb...@gmail.com <lb...@gmail.com> #17
This seems to be fixed now.
Using this:
implementation 'androidx.preference:preference:1.1.0-alpha05'
Using this:
implementation 'androidx.preference:preference:1.1.0-alpha05'
Description
java.lang.IllegalStateException: Failure saving state: active Fragment1{23e960a (d5059385-545b-433e-8be2-b5952bb3b77c) id=0x7f080083} was removed from the FragmentManager
at androidx.fragment.app.FragmentManagerImpl.saveAllState(FragmentManagerImpl.java:2301)
at androidx.fragment.app.Fragment.performSaveInstanceState(Fragment.java:2629)
at androidx.fragment.app.FragmentManagerImpl.saveFragmentBasicState(FragmentManagerImpl.java:2253)
at androidx.fragment.app.FragmentManagerImpl.saveAllState(FragmentManagerImpl.java:2312)
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 android.app.Activity.performSaveInstanceState(Activity.java:1549)
at android.app.Instrumentation.callActivityOnSaveInstanceState(Instrumentation.java:1443)
at android.app.ActivityThread.callActivityOnSaveInstanceState(ActivityThread.java:4809)
at android.app.ActivityThread.callActivityOnStop(ActivityThread.java:4157)
at android.app.ActivityThread.handleRelaunchActivityInner(ActivityThread.java:4757)
at android.app.ActivityThread.handleRelaunchActivity(ActivityThread.java:4693)
at android.app.servertransaction.ActivityRelaunchItem.execute(ActivityRelaunchItem.java:69)
at android.app.servertransaction.TransactionExecutor.executeCallbacks(TransactionExecutor.java:108)
at android.app.servertransaction.TransactionExecutor.execute(TransactionExecutor.java:68)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1808)
at android.os.Handler.dispatchMessage(Handler.java:106)
at android.os.Looper.loop(Looper.java:193)
at android.app.ActivityThread.main(ActivityThread.java:6669)
at java.lang.reflect.Method.invoke(Native Method)
at com.android.internal.os.RuntimeInit$MethodAndArgsCaller.run(RuntimeInit.java:493)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:858)
Steps to reproduce:
- Download the attached minimal sample project and run the app
- Stay on the first bottom navigation destination (i.e. Fragment 1) and rotate the device multiple times - notice the app behaves as expected
- Navigate to the second or third bottom navigation destination (i.e. Fragment 2 or Fragment 3) and rotate the device multiple times - notice the app crashes with the aforementioned stacktrace
This can be prevented by downgrading the androidx.fragment:fragment:1.1.0-alpha01 dependency to version to the prior release (1.0.0) or by removing the dependency altogether.