Throw an exception before creating bad child fragment manager.
Bug 34183840
When accessing a fragment's child fragment manager prior to
its being attached, it will forever be in a bad state. This
CL throws an exception when that happens to warn the developer
not to do that.
The original bug came from a restored fragment listed in "active"
having its child fragment manager being accessed. The restored
fragment may not have been attached if it is only in the back
stack.
Test: gradlew connectedCheck in fragments/
Change-Id: I2304ab56bc72ae675c0cde0fc83dac6221ae615e
diff --git a/fragment/java/android/support/v4/app/Fragment.java b/fragment/java/android/support/v4/app/Fragment.java
index 881c2b4..06d0b1e 100644
--- a/fragment/java/android/support/v4/app/Fragment.java
+++ b/fragment/java/android/support/v4/app/Fragment.java
@@ -2150,6 +2150,9 @@
}
void instantiateChildFragmentManager() {
+ if (mHost == null) {
+ throw new IllegalStateException("Fragment has not been attached yet.");
+ }
mChildFragmentManager = new FragmentManagerImpl();
mChildFragmentManager.attachController(mHost, new FragmentContainer() {
@Override