diff options
| author | Adam Powell <adamp@google.com> | 2016-02-04 16:20:37 -0800 |
|---|---|---|
| committer | Adam Powell <adamp@google.com> | 2016-02-08 19:10:44 +0000 |
| commit | 44ba79e47d6db54e5501f994880fa09eb880c185 (patch) | |
| tree | 4d20af401f2ee2a8d69f145260a0fab1ea612ce8 /core/java/android/app/FragmentController.java | |
| parent | 8585ed66b947ef30d6a43f0bb91885ed0c5ebfb4 (diff) | |
Permit setRetainInstance(true) on nested fragments, framework edition
Save arbitrarily nested fragments across config changes as
nonconfiguration objects. This permits the use of retain-instance
child fragments as arbitrary opaque dependencies within other
fragments.
Change-Id: Ia6640b76cfcf7ec28ba252628957a0c14863e957
(cherry picked from commit 7466be66263d5ebffb786ea402d9ed6e36c254f0)
Diffstat (limited to 'core/java/android/app/FragmentController.java')
| -rw-r--r-- | core/java/android/app/FragmentController.java | 26 |
1 files changed, 25 insertions, 1 deletions
diff --git a/core/java/android/app/FragmentController.java b/core/java/android/app/FragmentController.java index a9270bc43e09..57b0ff134818 100644 --- a/core/java/android/app/FragmentController.java +++ b/core/java/android/app/FragmentController.java @@ -117,16 +117,40 @@ public class FragmentController { * instances retained across configuration changes. * * @see #retainNonConfig() + * + * @deprecated use {@link #restoreAllState(Parcelable, FragmentManagerNonConfig)} */ public void restoreAllState(Parcelable state, List<Fragment> nonConfigList) { - mHost.mFragmentManager.restoreAllState(state, nonConfigList); + mHost.mFragmentManager.restoreAllState(state, + new FragmentManagerNonConfig(nonConfigList, null)); + } + + /** + * Restores the saved state for all Fragments. The given FragmentManagerNonConfig are Fragment + * instances retained across configuration changes, including nested fragments + * + * @see #retainNestedNonConfig() + */ + public void restoreAllState(Parcelable state, FragmentManagerNonConfig nonConfig) { + mHost.mFragmentManager.restoreAllState(state, nonConfig); } /** * Returns a list of Fragments that have opted to retain their instance across * configuration changes. + * + * @deprecated use {@link #retainNestedNonConfig()} to also track retained + * nested child fragments */ public List<Fragment> retainNonConfig() { + return mHost.mFragmentManager.retainNonConfig().getFragments(); + } + + /** + * Returns a nested tree of Fragments that have opted to retain their instance across + * configuration changes. + */ + public FragmentManagerNonConfig retainNestedNonConfig() { return mHost.mFragmentManager.retainNonConfig(); } |
