Loading core/java/android/app/FragmentManager.java +87 −133 Original line number Diff line number Diff line Loading @@ -670,7 +670,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate int mNextFragmentIndex = 0; SparseArray<Fragment> mActive; ArrayList<Fragment> mAdded; final ArrayList<Fragment> mAdded = new ArrayList<>(); ArrayList<BackStackRecord> mBackStack; ArrayList<Fragment> mCreatedMenus; Loading Loading @@ -925,7 +925,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate @Override public List<Fragment> getFragments() { if (mAdded == null) { if (mAdded.isEmpty()) { return Collections.EMPTY_LIST; } synchronized (mAdded) { Loading Loading @@ -988,15 +988,17 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } if (mAdded != null) { N = mAdded.size(); if (N > 0) { writer.print(prefix); writer.println("Added Fragments:"); writer.print(prefix); writer.println("Added Fragments:"); for (int i = 0; i < N; i++) { Fragment f = mAdded.get(i); writer.print(prefix); writer.print(" #"); writer.print(i); writer.print(": "); writer.println(f.toString()); } writer.print(prefix); writer.print(" #"); writer.print(i); writer.print(": "); writer.println(f.toString()); } } Loading Loading @@ -1602,7 +1604,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate boolean loadersRunning = false; // Must add them in the proper order. mActive fragments may be out of order if (mAdded != null) { final int numAdded = mAdded.size(); for (int i = 0; i < numAdded; i++) { Fragment f = mAdded.get(i); Loading @@ -1611,7 +1612,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate loadersRunning |= f.mLoaderManager.hasRunningLoaders(); } } } // Now iterate through all active fragments. These will include those that are removed // and detached. Loading Loading @@ -1675,9 +1675,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } public void addFragment(Fragment fragment, boolean moveToStateNow) { if (mAdded == null) { mAdded = new ArrayList<Fragment>(); } if (DEBUG) Log.v(TAG, "add: " + fragment); makeActive(fragment); if (!fragment.mDetached) { Loading Loading @@ -1713,11 +1710,9 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate throw new IllegalStateException("Fragment not added: " + fragment); } } if (mAdded != null) { synchronized (mAdded) { mAdded.remove(fragment); } } if (fragment.mHasMenu && fragment.mMenuVisible) { mNeedMenuInvalidate = true; } Loading Loading @@ -1764,12 +1759,10 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate fragment.mDetached = true; if (fragment.mAdded) { // We are not already in back stack, so need to remove the fragment. if (mAdded != null) { if (DEBUG) Log.v(TAG, "remove from detach: " + fragment); synchronized (mAdded) { mAdded.remove(fragment); } } if (fragment.mHasMenu && fragment.mMenuVisible) { mNeedMenuInvalidate = true; } Loading @@ -1783,9 +1776,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate if (fragment.mDetached) { fragment.mDetached = false; if (!fragment.mAdded) { if (mAdded == null) { mAdded = new ArrayList<Fragment>(); } if (mAdded.contains(fragment)) { throw new IllegalStateException("Fragment already added: " + fragment); } Loading @@ -1802,7 +1792,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } public Fragment findFragmentById(int id) { if (mAdded != null) { // First look through added fragments. for (int i = mAdded.size() - 1; i >= 0; i--) { Fragment f = mAdded.get(i); Loading @@ -1810,7 +1799,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate return f; } } } if (mActive != null) { // Now for any known fragment. for (int i=mActive.size()-1; i>=0; i--) { Loading @@ -1824,7 +1812,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } public Fragment findFragmentByTag(String tag) { if (mAdded != null && tag != null) { if (tag != null) { // First look through added fragments. for (int i=mAdded.size()-1; i>=0; i--) { Fragment f = mAdded.get(i); Loading Loading @@ -2164,9 +2152,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } else { mTmpAddedFragments.clear(); } if (mAdded != null) { mTmpAddedFragments.addAll(mAdded); } Fragment oldPrimaryNav = getPrimaryNavigationFragment(); for (int recordNum = startIndex; recordNum < endIndex; recordNum++) { final BackStackRecord record = records.get(recordNum); Loading Loading @@ -2406,7 +2392,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } // We want to leave the fragment in the started state final int state = Math.min(mCurState, Fragment.STARTED); final int numAdded = mAdded == null ? 0 : mAdded.size(); final int numAdded = mAdded.size(); for (int i = 0; i < numAdded; i++) { Fragment fragment = mAdded.get(i); if (fragment.mState < state) { Loading Loading @@ -2754,7 +2740,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate BackStackState[] backStack = null; // Build list of currently added fragments. if (mAdded != null) { N = mAdded.size(); if (N > 0) { added = new int[N]; Loading @@ -2769,7 +2754,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate + ": " + mAdded.get(i)); } } } // Now save back stack. if (mBackStack != null) { Loading Loading @@ -2876,8 +2860,8 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } // Build the list of currently added fragments. mAdded.clear(); if (fms.mAdded != null) { mAdded = new ArrayList<Fragment>(fms.mAdded.length); for (int i=0; i<fms.mAdded.length; i++) { Fragment f = mActive.get(fms.mAdded[i]); if (f == null) { Loading @@ -2893,8 +2877,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate mAdded.add(f); } } } else { mAdded = null; } // Build the back stack. Loading Loading @@ -2970,7 +2952,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate public void noteStateNotSaved() { mSavedNonConfig = null; mStateSaved = false; final int addedCount = mAdded == null ? 0 : mAdded.size(); final int addedCount = mAdded.size(); for (int i = 0; i < addedCount; i++) { Fragment fragment = mAdded.get(i); if (fragment != null) { Loading Loading @@ -3047,9 +3029,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate */ @Deprecated public void dispatchMultiWindowModeChanged(boolean isInMultiWindowMode) { if (mAdded == null) { return; } for (int i = mAdded.size() - 1; i >= 0; --i) { final Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3060,9 +3039,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate public void dispatchMultiWindowModeChanged(boolean isInMultiWindowMode, Configuration newConfig) { if (mAdded == null) { return; } for (int i = mAdded.size() - 1; i >= 0; --i) { final Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3076,9 +3052,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate */ @Deprecated public void dispatchPictureInPictureModeChanged(boolean isInPictureInPictureMode) { if (mAdded == null) { return; } for (int i = mAdded.size() - 1; i >= 0; --i) { final Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3089,9 +3062,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate public void dispatchPictureInPictureModeChanged(boolean isInPictureInPictureMode, Configuration newConfig) { if (mAdded == null) { return; } for (int i = mAdded.size() - 1; i >= 0; --i) { final Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3101,7 +3071,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } public void dispatchConfigurationChanged(Configuration newConfig) { if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3109,10 +3078,8 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } public void dispatchLowMemory() { if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3120,10 +3087,8 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } public void dispatchTrimMemory(int level) { if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3131,12 +3096,10 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } public boolean dispatchCreateOptionsMenu(Menu menu, MenuInflater inflater) { boolean show = false; ArrayList<Fragment> newMenus = null; if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3149,7 +3112,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } if (mCreatedMenus != null) { for (int i=0; i<mCreatedMenus.size(); i++) { Loading @@ -3167,7 +3129,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate public boolean dispatchPrepareOptionsMenu(Menu menu) { boolean show = false; if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3176,12 +3137,10 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } return show; } public boolean dispatchOptionsItemSelected(MenuItem item) { if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3190,12 +3149,10 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } return false; } public boolean dispatchContextItemSelected(MenuItem item) { if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3204,12 +3161,10 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } return false; } public void dispatchOptionsMenuClosed(Menu menu) { if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3217,7 +3172,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } @SuppressWarnings("ReferenceEquality") public void setPrimaryNavigationFragment(Fragment f) { Loading Loading
core/java/android/app/FragmentManager.java +87 −133 Original line number Diff line number Diff line Loading @@ -670,7 +670,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate int mNextFragmentIndex = 0; SparseArray<Fragment> mActive; ArrayList<Fragment> mAdded; final ArrayList<Fragment> mAdded = new ArrayList<>(); ArrayList<BackStackRecord> mBackStack; ArrayList<Fragment> mCreatedMenus; Loading Loading @@ -925,7 +925,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate @Override public List<Fragment> getFragments() { if (mAdded == null) { if (mAdded.isEmpty()) { return Collections.EMPTY_LIST; } synchronized (mAdded) { Loading Loading @@ -988,15 +988,17 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } if (mAdded != null) { N = mAdded.size(); if (N > 0) { writer.print(prefix); writer.println("Added Fragments:"); writer.print(prefix); writer.println("Added Fragments:"); for (int i = 0; i < N; i++) { Fragment f = mAdded.get(i); writer.print(prefix); writer.print(" #"); writer.print(i); writer.print(": "); writer.println(f.toString()); } writer.print(prefix); writer.print(" #"); writer.print(i); writer.print(": "); writer.println(f.toString()); } } Loading Loading @@ -1602,7 +1604,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate boolean loadersRunning = false; // Must add them in the proper order. mActive fragments may be out of order if (mAdded != null) { final int numAdded = mAdded.size(); for (int i = 0; i < numAdded; i++) { Fragment f = mAdded.get(i); Loading @@ -1611,7 +1612,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate loadersRunning |= f.mLoaderManager.hasRunningLoaders(); } } } // Now iterate through all active fragments. These will include those that are removed // and detached. Loading Loading @@ -1675,9 +1675,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } public void addFragment(Fragment fragment, boolean moveToStateNow) { if (mAdded == null) { mAdded = new ArrayList<Fragment>(); } if (DEBUG) Log.v(TAG, "add: " + fragment); makeActive(fragment); if (!fragment.mDetached) { Loading Loading @@ -1713,11 +1710,9 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate throw new IllegalStateException("Fragment not added: " + fragment); } } if (mAdded != null) { synchronized (mAdded) { mAdded.remove(fragment); } } if (fragment.mHasMenu && fragment.mMenuVisible) { mNeedMenuInvalidate = true; } Loading Loading @@ -1764,12 +1759,10 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate fragment.mDetached = true; if (fragment.mAdded) { // We are not already in back stack, so need to remove the fragment. if (mAdded != null) { if (DEBUG) Log.v(TAG, "remove from detach: " + fragment); synchronized (mAdded) { mAdded.remove(fragment); } } if (fragment.mHasMenu && fragment.mMenuVisible) { mNeedMenuInvalidate = true; } Loading @@ -1783,9 +1776,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate if (fragment.mDetached) { fragment.mDetached = false; if (!fragment.mAdded) { if (mAdded == null) { mAdded = new ArrayList<Fragment>(); } if (mAdded.contains(fragment)) { throw new IllegalStateException("Fragment already added: " + fragment); } Loading @@ -1802,7 +1792,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } public Fragment findFragmentById(int id) { if (mAdded != null) { // First look through added fragments. for (int i = mAdded.size() - 1; i >= 0; i--) { Fragment f = mAdded.get(i); Loading @@ -1810,7 +1799,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate return f; } } } if (mActive != null) { // Now for any known fragment. for (int i=mActive.size()-1; i>=0; i--) { Loading @@ -1824,7 +1812,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } public Fragment findFragmentByTag(String tag) { if (mAdded != null && tag != null) { if (tag != null) { // First look through added fragments. for (int i=mAdded.size()-1; i>=0; i--) { Fragment f = mAdded.get(i); Loading Loading @@ -2164,9 +2152,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } else { mTmpAddedFragments.clear(); } if (mAdded != null) { mTmpAddedFragments.addAll(mAdded); } Fragment oldPrimaryNav = getPrimaryNavigationFragment(); for (int recordNum = startIndex; recordNum < endIndex; recordNum++) { final BackStackRecord record = records.get(recordNum); Loading Loading @@ -2406,7 +2392,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } // We want to leave the fragment in the started state final int state = Math.min(mCurState, Fragment.STARTED); final int numAdded = mAdded == null ? 0 : mAdded.size(); final int numAdded = mAdded.size(); for (int i = 0; i < numAdded; i++) { Fragment fragment = mAdded.get(i); if (fragment.mState < state) { Loading Loading @@ -2754,7 +2740,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate BackStackState[] backStack = null; // Build list of currently added fragments. if (mAdded != null) { N = mAdded.size(); if (N > 0) { added = new int[N]; Loading @@ -2769,7 +2754,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate + ": " + mAdded.get(i)); } } } // Now save back stack. if (mBackStack != null) { Loading Loading @@ -2876,8 +2860,8 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } // Build the list of currently added fragments. mAdded.clear(); if (fms.mAdded != null) { mAdded = new ArrayList<Fragment>(fms.mAdded.length); for (int i=0; i<fms.mAdded.length; i++) { Fragment f = mActive.get(fms.mAdded[i]); if (f == null) { Loading @@ -2893,8 +2877,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate mAdded.add(f); } } } else { mAdded = null; } // Build the back stack. Loading Loading @@ -2970,7 +2952,7 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate public void noteStateNotSaved() { mSavedNonConfig = null; mStateSaved = false; final int addedCount = mAdded == null ? 0 : mAdded.size(); final int addedCount = mAdded.size(); for (int i = 0; i < addedCount; i++) { Fragment fragment = mAdded.get(i); if (fragment != null) { Loading Loading @@ -3047,9 +3029,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate */ @Deprecated public void dispatchMultiWindowModeChanged(boolean isInMultiWindowMode) { if (mAdded == null) { return; } for (int i = mAdded.size() - 1; i >= 0; --i) { final Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3060,9 +3039,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate public void dispatchMultiWindowModeChanged(boolean isInMultiWindowMode, Configuration newConfig) { if (mAdded == null) { return; } for (int i = mAdded.size() - 1; i >= 0; --i) { final Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3076,9 +3052,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate */ @Deprecated public void dispatchPictureInPictureModeChanged(boolean isInPictureInPictureMode) { if (mAdded == null) { return; } for (int i = mAdded.size() - 1; i >= 0; --i) { final Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3089,9 +3062,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate public void dispatchPictureInPictureModeChanged(boolean isInPictureInPictureMode, Configuration newConfig) { if (mAdded == null) { return; } for (int i = mAdded.size() - 1; i >= 0; --i) { final Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3101,7 +3071,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } public void dispatchConfigurationChanged(Configuration newConfig) { if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3109,10 +3078,8 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } public void dispatchLowMemory() { if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3120,10 +3087,8 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } public void dispatchTrimMemory(int level) { if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3131,12 +3096,10 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } public boolean dispatchCreateOptionsMenu(Menu menu, MenuInflater inflater) { boolean show = false; ArrayList<Fragment> newMenus = null; if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3149,7 +3112,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } if (mCreatedMenus != null) { for (int i=0; i<mCreatedMenus.size(); i++) { Loading @@ -3167,7 +3129,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate public boolean dispatchPrepareOptionsMenu(Menu menu) { boolean show = false; if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3176,12 +3137,10 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } return show; } public boolean dispatchOptionsItemSelected(MenuItem item) { if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3190,12 +3149,10 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } return false; } public boolean dispatchContextItemSelected(MenuItem item) { if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3204,12 +3161,10 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } return false; } public void dispatchOptionsMenuClosed(Menu menu) { if (mAdded != null) { for (int i = 0; i < mAdded.size(); i++) { Fragment f = mAdded.get(i); if (f != null) { Loading @@ -3217,7 +3172,6 @@ final class FragmentManagerImpl extends FragmentManager implements LayoutInflate } } } } @SuppressWarnings("ReferenceEquality") public void setPrimaryNavigationFragment(Fragment f) { Loading