Fixed
Status Update
Comments
sa...@google.com <sa...@google.com> #2
Comment has been deleted.
ap...@google.com <ap...@google.com> #3
Project: platform/frameworks/support
Branch: androidx-main
commit 9dd08b4a19659015b864573860df4e9eedb277e9
Author: Sanura N'Jaka <sanura@google.com>
Date: Wed Jun 02 21:15:55 2021
Convert FragmentManager over to using SavedStateRegistry
Converting the FragmentManager over to saving its state
using SavedStateRegistry, rather than relying on
FragmentActivity to do so. Deprecating the saveAllState()
and restoreSaveState() methods in FragmentController.
To automatically restore and save the fragment's state,
developers should have their host implement
SavedStateRegistryOwner.
RelNote: "`FragmentManager` now uses `SavedStateRegistry`
to save its state. The `saveAllState()` and
`restoreSavedState()` methods have also been deprecated
in `FragmentController`. To automatically restore and
save the `Fragment`'s state, have the host implement
`SavedStateRegistryOwner`, as done in `HostCallbacks`
in `FragmentActivity`."
Bug: 188734238
Test: FragmentManagerSavedStateRegistryTest.kt
Change-Id: Iba68e71ee9ec0befa79a565a476d25534e86d0e3
M fragment/fragment/api/current.txt
M fragment/fragment/api/public_plus_experimental_current.txt
M fragment/fragment/api/restricted_current.txt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/ControllerHostCallbacks.kt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/DialogFragmentTest.kt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentLifecycleTest.kt
A fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentManagerSavedStateRegistryTest.kt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentReceiveResultTest.kt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/ReentrantFragmentTest.kt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/SaveStateFragmentTest.kt
A fragment/fragment/src/androidTest/java/androidx/fragment/app/test/StateSaveFragment.kt
M fragment/fragment/src/main/java/androidx/fragment/app/Fragment.java
M fragment/fragment/src/main/java/androidx/fragment/app/FragmentActivity.java
M fragment/fragment/src/main/java/androidx/fragment/app/FragmentController.java
M fragment/fragment/src/main/java/androidx/fragment/app/FragmentManager.java
https://android-review.googlesource.com/1726070
Branch: androidx-main
commit 9dd08b4a19659015b864573860df4e9eedb277e9
Author: Sanura N'Jaka <sanura@google.com>
Date: Wed Jun 02 21:15:55 2021
Convert FragmentManager over to using SavedStateRegistry
Converting the FragmentManager over to saving its state
using SavedStateRegistry, rather than relying on
FragmentActivity to do so. Deprecating the saveAllState()
and restoreSaveState() methods in FragmentController.
To automatically restore and save the fragment's state,
developers should have their host implement
SavedStateRegistryOwner.
RelNote: "`FragmentManager` now uses `SavedStateRegistry`
to save its state. The `saveAllState()` and
`restoreSavedState()` methods have also been deprecated
in `FragmentController`. To automatically restore and
save the `Fragment`'s state, have the host implement
`SavedStateRegistryOwner`, as done in `HostCallbacks`
in `FragmentActivity`."
Bug: 188734238
Test: FragmentManagerSavedStateRegistryTest.kt
Change-Id: Iba68e71ee9ec0befa79a565a476d25534e86d0e3
M fragment/fragment/api/current.txt
M fragment/fragment/api/public_plus_experimental_current.txt
M fragment/fragment/api/restricted_current.txt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/ControllerHostCallbacks.kt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/DialogFragmentTest.kt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentLifecycleTest.kt
A fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentManagerSavedStateRegistryTest.kt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/FragmentReceiveResultTest.kt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/ReentrantFragmentTest.kt
M fragment/fragment/src/androidTest/java/androidx/fragment/app/SaveStateFragmentTest.kt
A fragment/fragment/src/androidTest/java/androidx/fragment/app/test/StateSaveFragment.kt
M fragment/fragment/src/main/java/androidx/fragment/app/Fragment.java
M fragment/fragment/src/main/java/androidx/fragment/app/FragmentActivity.java
M fragment/fragment/src/main/java/androidx/fragment/app/FragmentController.java
M fragment/fragment/src/main/java/androidx/fragment/app/FragmentManager.java
sa...@google.com <sa...@google.com>
sr...@gmail.com <sr...@gmail.com> #4
dependencies { def fragment_version = "1.3.6"
// Java language implementation
implementation "androidx.fragment:fragment:$fragment_version"
// Kotlin
implementation "androidx.fragment:fragment-ktx:$fragment_version"
// Testing Fragments in Isolation
debugImplementation "androidx.fragment:fragment-testing:$fragment_version"
}
Description
The
FragmentManager
should be converted over to saving its state using theSavedStateRegistry
architecture component.We should provide
FragmentManager
with aSavedStateRegistryController
and move all of the code from theFragmentActivity
'sinit()
into theattachController()
method ofFragmentManager
.It currently relies on the
SavedStateRegistry
of theFragmentActivity
which hacked together methods likemarkFragmentsCreated()
andmFragments.saveAllState()
that can likely be called directly from theFragmentManager
.The more complex piece is moving the
OnContextAvailableListener()
over sinceFragmentManager
does not have the same signal for when theContext
is immediately available.