summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--core/java/android/app/BackStackRecord.java1
-rw-r--r--core/java/android/app/Fragment.java9
-rw-r--r--core/java/android/app/FragmentManager.java9
-rw-r--r--core/java/android/app/FragmentTransition.java3
4 files changed, 20 insertions, 2 deletions
diff --git a/core/java/android/app/BackStackRecord.java b/core/java/android/app/BackStackRecord.java
index f564e8d08754..cf274b4127ef 100644
--- a/core/java/android/app/BackStackRecord.java
+++ b/core/java/android/app/BackStackRecord.java
@@ -890,6 +890,7 @@ final class BackStackRecord extends FragmentTransaction implements
* this set of ops
* @return the new oldPrimaryNav fragment after this record's ops would be run
*/
+ @SuppressWarnings("ReferenceEquality")
Fragment expandOps(ArrayList<Fragment> added, Fragment oldPrimaryNav) {
for (int opNum = 0; opNum < mOps.size(); opNum++) {
final Op op = mOps.get(opNum);
diff --git a/core/java/android/app/Fragment.java b/core/java/android/app/Fragment.java
index 44fefd38048c..f9a4d2a72ce4 100644
--- a/core/java/android/app/Fragment.java
+++ b/core/java/android/app/Fragment.java
@@ -58,6 +58,7 @@ import android.widget.AdapterView;
import java.io.FileDescriptor;
import java.io.PrintWriter;
+import java.lang.reflect.InvocationTargetException;
final class FragmentState implements Parcelable {
final String mClassName;
@@ -616,7 +617,7 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene
}
sClassMap.put(fname, clazz);
}
- Fragment f = (Fragment)clazz.newInstance();
+ Fragment f = (Fragment) clazz.getConstructor().newInstance();
if (args != null) {
args.setClassLoader(f.getClass().getClassLoader());
f.setArguments(args);
@@ -634,6 +635,12 @@ public class Fragment implements ComponentCallbacks2, OnCreateContextMenuListene
throw new InstantiationException("Unable to instantiate fragment " + fname
+ ": make sure class name exists, is public, and has an"
+ " empty constructor that is public", e);
+ } catch (NoSuchMethodException e) {
+ throw new InstantiationException("Unable to instantiate fragment " + fname
+ + ": could not find Fragment constructor", e);
+ } catch (InvocationTargetException e) {
+ throw new InstantiationException("Unable to instantiate fragment " + fname
+ + ": calling Fragment constructor caused an exception", e);
}
}
diff --git a/core/java/android/app/FragmentManager.java b/core/java/android/app/FragmentManager.java
index d710d8bb6221..572472e95c76 100644
--- a/core/java/android/app/FragmentManager.java
+++ b/core/java/android/app/FragmentManager.java
@@ -1095,6 +1095,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
return mCurState >= state;
}
+ @SuppressWarnings("ReferenceEquality")
void moveToState(Fragment f, int newState, int transit, int transitionStyle,
boolean keepActive) {
if (DEBUG && false) Log.v(TAG, "moveToState: " + f
@@ -1193,6 +1194,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
}
f.mRetaining = false;
}
+ // fall through
case Fragment.CREATED:
// This is outside the if statement below on purpose; we want this to run
// even if we do a moveToState from CREATED => *, CREATED => CREATED, and
@@ -1253,16 +1255,19 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
}
f.mSavedFragmentState = null;
}
+ // fall through
case Fragment.ACTIVITY_CREATED:
if (newState > Fragment.ACTIVITY_CREATED) {
f.mState = Fragment.STOPPED;
}
+ // fall through
case Fragment.STOPPED:
if (newState > Fragment.STOPPED) {
if (DEBUG) Log.v(TAG, "moveto STARTED: " + f);
f.performStart();
dispatchOnFragmentStarted(f, false);
}
+ // fall through
case Fragment.STARTED:
if (newState > Fragment.STARTED) {
if (DEBUG) Log.v(TAG, "moveto RESUMED: " + f);
@@ -1281,12 +1286,14 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
f.performPause();
dispatchOnFragmentPaused(f, false);
}
+ // fall through
case Fragment.STARTED:
if (newState < Fragment.STARTED) {
if (DEBUG) Log.v(TAG, "movefrom STARTED: " + f);
f.performStop();
dispatchOnFragmentStopped(f, false);
}
+ // fall through
case Fragment.STOPPED:
case Fragment.ACTIVITY_CREATED:
if (newState < Fragment.ACTIVITY_CREATED) {
@@ -1338,6 +1345,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
f.mView = null;
f.mInLayout = false;
}
+ // fall through
case Fragment.CREATED:
if (newState < Fragment.CREATED) {
if (mDestroyed) {
@@ -3047,6 +3055,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate
}
}
+ @SuppressWarnings("ReferenceEquality")
public void setPrimaryNavigationFragment(Fragment f) {
if (f != null && (mActive.get(f.mIndex) != f
|| (f.mHost != null && f.getFragmentManager() != this))) {
diff --git a/core/java/android/app/FragmentTransition.java b/core/java/android/app/FragmentTransition.java
index 780a9227cecc..128797057304 100644
--- a/core/java/android/app/FragmentTransition.java
+++ b/core/java/android/app/FragmentTransition.java
@@ -1236,6 +1236,7 @@ class FragmentTransition {
* added fragments have Views in the hierarchy or false if the
* operations haven't been executed yet.
*/
+ @SuppressWarnings("ReferenceEquality")
private static void addToFirstInLastOut(BackStackRecord transaction, BackStackRecord.Op op,
SparseArray<FragmentContainerTransition> transitioningFragments, boolean isPop,
boolean isOptimizedTransaction) {
@@ -1305,7 +1306,7 @@ class FragmentTransition {
containerTransition.firstOut = null;
}
- /**
+ /*
* Ensure that fragments that are entering are at least at the CREATED state
* so that they may load Transitions using TransitionInflater.
*/