summaryrefslogtreecommitdiff
path: root/core/java/android/app/FragmentController.java
diff options
context:
space:
mode:
authorAdam Powell <adamp@google.com>2016-02-04 16:20:37 -0800
committerAdam Powell <adamp@google.com>2016-02-08 19:10:44 +0000
commit44ba79e47d6db54e5501f994880fa09eb880c185 (patch)
tree4d20af401f2ee2a8d69f145260a0fab1ea612ce8 /core/java/android/app/FragmentController.java
parent8585ed66b947ef30d6a43f0bb91885ed0c5ebfb4 (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.java26
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();
}