summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
author TreeHugger Robot <treehugger-gerrit@google.com> 2017-03-06 19:31:25 +0000
committer Android (Google) Code Review <android-gerrit@google.com> 2017-03-06 19:31:30 +0000
commit3a471757788678ac9abe8da5032e1aec442a7ca1 (patch)
tree3e244f9bf11c2bc9da4377c7d780671ed78f62e5
parentb85f02e9add59192b4d45ec3b52f9c01747edfc2 (diff)
parente6f7daeb469ee4242416270b803e06909436d90e (diff)
Merge "Fix Loader bugs"
-rw-r--r--core/java/android/app/FragmentHostCallback.java12
-rw-r--r--core/java/android/app/FragmentManager.java14
-rw-r--r--core/java/android/app/LoaderManager.java1
3 files changed, 14 insertions, 13 deletions
diff --git a/core/java/android/app/FragmentHostCallback.java b/core/java/android/app/FragmentHostCallback.java
index 7e415e9f2f4b..41a885eeb7f0 100644
--- a/core/java/android/app/FragmentHostCallback.java
+++ b/core/java/android/app/FragmentHostCallback.java
@@ -308,13 +308,11 @@ public abstract class FragmentHostCallback<E> extends FragmentContainer {
mAllLoaderManagers = new ArrayMap<String, LoaderManager>();
}
LoaderManagerImpl lm = (LoaderManagerImpl) mAllLoaderManagers.get(who);
- if (lm == null) {
- if (create) {
- lm = new LoaderManagerImpl(who, this, started);
- mAllLoaderManagers.put(who, lm);
- }
- } else {
- lm.updateHostController(this);
+ if (lm == null && create) {
+ lm = new LoaderManagerImpl(who, this, started);
+ mAllLoaderManagers.put(who, lm);
+ } else if (started && lm != null && !lm.mStarted){
+ lm.doStart();
}
return lm;
}
diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java
index 977931a66e1e..0672e3bc13a8 100644
--- a/core/java/android/app/FragmentManager.java
+++ b/core/java/android/app/FragmentManager.java
@@ -1536,12 +1536,14 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
boolean loadersRunning = false;
// Must add them in the proper order. mActive fragments may be out of order
- final int numAdded = mAdded.size();
- for (int i = 0; i < numAdded; i++) {
- Fragment f = mAdded.get(i);
- moveFragmentToExpectedState(f);
- if (f.mLoaderManager != null) {
- loadersRunning |= f.mLoaderManager.hasRunningLoaders();
+ if (mAdded != null) {
+ final int numAdded = mAdded.size();
+ for (int i = 0; i < numAdded; i++) {
+ Fragment f = mAdded.get(i);
+ moveFragmentToExpectedState(f);
+ if (f.mLoaderManager != null) {
+ loadersRunning |= f.mLoaderManager.hasRunningLoaders();
+ }
}
}
diff --git a/core/java/android/app/LoaderManager.java b/core/java/android/app/LoaderManager.java
index bedf31a22f26..56dfc589b0a7 100644
--- a/core/java/android/app/LoaderManager.java
+++ b/core/java/android/app/LoaderManager.java
@@ -852,6 +852,7 @@ class LoaderManagerImpl extends LoaderManager {
mInactiveLoaders.valueAt(i).destroy();
}
mInactiveLoaders.clear();
+ mHost = null;
}
@Override