package android.support.v4.app; import android.content.Context; import android.content.res.Configuration; import android.content.res.Resources; import android.os.Build.VERSION; import android.os.Bundle; import android.os.Handler; import android.os.Looper; import android.os.Parcelable; import android.support.v4.util.DebugUtils; import android.support.v4.util.LogWriter; import android.util.Log; import android.util.SparseArray; import android.view.Menu; import android.view.MenuInflater; import android.view.MenuItem; import android.view.View; import android.view.ViewGroup; import android.view.Window; import android.view.WindowManager.LayoutParams; import android.view.animation.AccelerateInterpolator; import android.view.animation.AlphaAnimation; import android.view.animation.Animation; import android.view.animation.Animation.AnimationListener; import android.view.animation.AnimationSet; import android.view.animation.AnimationUtils; import android.view.animation.DecelerateInterpolator; import android.view.animation.Interpolator; import android.view.animation.ScaleAnimation; import java.io.FileDescriptor; import java.io.PrintWriter; import java.util.ArrayList; import java.util.Arrays; final class FragmentManagerImpl extends FragmentManager { static final Interpolator ACCELERATE_CUBIC = new AccelerateInterpolator(1.5F); static final Interpolator ACCELERATE_QUINT; static final int ANIM_DUR = 220; public static final int ANIM_STYLE_CLOSE_ENTER = 3; public static final int ANIM_STYLE_CLOSE_EXIT = 4; public static final int ANIM_STYLE_FADE_ENTER = 5; public static final int ANIM_STYLE_FADE_EXIT = 6; public static final int ANIM_STYLE_OPEN_ENTER = 1; public static final int ANIM_STYLE_OPEN_EXIT = 2; static boolean DEBUG = false; static final Interpolator DECELERATE_CUBIC; static final Interpolator DECELERATE_QUINT; static final boolean HONEYCOMB = false; static final String TAG = "FragmentManager"; static final String TARGET_REQUEST_CODE_STATE_TAG = "android:target_req_state"; static final String TARGET_STATE_TAG = "android:target_state"; static final String USER_VISIBLE_HINT_TAG = "android:user_visible_hint"; static final String VIEW_STATE_TAG = "android:view_state"; ArrayList<Fragment> mActive; FragmentActivity mActivity; ArrayList<Fragment> mAdded; ArrayList<Integer> mAvailBackStackIndices; ArrayList<Integer> mAvailIndices; ArrayList<BackStackRecord> mBackStack; ArrayList<FragmentManager.OnBackStackChangedListener> mBackStackChangeListeners; ArrayList<BackStackRecord> mBackStackIndices; FragmentContainer mContainer; ArrayList<Fragment> mCreatedMenus; int mCurState = 0; boolean mDestroyed; Runnable mExecCommit = new Runnable() { public void run() { FragmentManagerImpl.this.execPendingActions(); } }; boolean mExecutingActions; boolean mHavePendingDeferredStart; boolean mNeedMenuInvalidate; String mNoTransactionsBecause; Fragment mParent; ArrayList<Runnable> mPendingActions; SparseArray<Parcelable> mStateArray = null; Bundle mStateBundle = null; boolean mStateSaved; Runnable[] mTmpActions; static { boolean bool = false; DEBUG = false; if (Build.VERSION.SDK_INT >= 11) { bool = true; } HONEYCOMB = bool; DECELERATE_QUINT = new DecelerateInterpolator(2.5F); DECELERATE_CUBIC = new DecelerateInterpolator(1.5F); ACCELERATE_QUINT = new AccelerateInterpolator(2.5F); } private void checkStateLoss() { if (this.mStateSaved) { throw new IllegalStateException("Can not perform this action after onSaveInstanceState"); } if (this.mNoTransactionsBecause != null) { throw new IllegalStateException("Can not perform this action inside of " + this.mNoTransactionsBecause); } } static Animation makeFadeAnimation(Context paramContext, float paramFloat1, float paramFloat2) { AlphaAnimation localAlphaAnimation = new AlphaAnimation(paramFloat1, paramFloat2); localAlphaAnimation.setInterpolator(DECELERATE_CUBIC); localAlphaAnimation.setDuration(220L); return localAlphaAnimation; } static Animation makeOpenCloseAnimation(Context paramContext, float paramFloat1, float paramFloat2, float paramFloat3, float paramFloat4) { AnimationSet localAnimationSet = new AnimationSet(false); ScaleAnimation localScaleAnimation = new ScaleAnimation(paramFloat1, paramFloat2, paramFloat1, paramFloat2, 1, 0.5F, 1, 0.5F); localScaleAnimation.setInterpolator(DECELERATE_QUINT); localScaleAnimation.setDuration(220L); localAnimationSet.addAnimation(localScaleAnimation); AlphaAnimation localAlphaAnimation = new AlphaAnimation(paramFloat3, paramFloat4); localAlphaAnimation.setInterpolator(DECELERATE_CUBIC); localAlphaAnimation.setDuration(220L); localAnimationSet.addAnimation(localAlphaAnimation); return localAnimationSet; } public static int reverseTransit(int paramInt) { int i = 0; switch (paramInt) { } for (;;) { return i; i = 8194; continue; i = 4097; continue; i = 4099; } } private void throwException(RuntimeException paramRuntimeException) { Log.e("FragmentManager", paramRuntimeException.getMessage()); Log.e("FragmentManager", "Activity state:"); PrintWriter localPrintWriter = new PrintWriter(new LogWriter("FragmentManager")); if (this.mActivity != null) {} for (;;) { try { this.mActivity.dump(" ", null, localPrintWriter, new String[0]); throw paramRuntimeException; } catch (Exception localException2) { Log.e("FragmentManager", "Failed dumping state", localException2); continue; } try { dump(" ", null, localPrintWriter, new String[0]); } catch (Exception localException1) { Log.e("FragmentManager", "Failed dumping state", localException1); } } } public static int transitToStyleIndex(int paramInt, boolean paramBoolean) { int i = -1; switch (paramInt) { default: return i; case 4097: if (paramBoolean) {} for (i = 1;; i = 2) { break; } case 8194: if (paramBoolean) {} for (i = 3;; i = 4) { break; } } if (paramBoolean) {} for (i = 5;; i = 6) { break; } } void addBackStackState(BackStackRecord paramBackStackRecord) { if (this.mBackStack == null) { this.mBackStack = new ArrayList(); } this.mBackStack.add(paramBackStackRecord); reportBackStackChanged(); } public void addFragment(Fragment paramFragment, boolean paramBoolean) { if (this.mAdded == null) { this.mAdded = new ArrayList(); } if (DEBUG) { Log.v("FragmentManager", "add: " + paramFragment); } makeActive(paramFragment); if (!paramFragment.mDetached) { if (this.mAdded.contains(paramFragment)) { throw new IllegalStateException("Fragment already added: " + paramFragment); } this.mAdded.add(paramFragment); paramFragment.mAdded = true; paramFragment.mRemoving = false; if ((paramFragment.mHasMenu) && (paramFragment.mMenuVisible)) { this.mNeedMenuInvalidate = true; } if (paramBoolean) { moveToState(paramFragment); } } } public void addOnBackStackChangedListener(FragmentManager.OnBackStackChangedListener paramOnBackStackChangedListener) { if (this.mBackStackChangeListeners == null) { this.mBackStackChangeListeners = new ArrayList(); } this.mBackStackChangeListeners.add(paramOnBackStackChangedListener); } public int allocBackStackIndex(BackStackRecord paramBackStackRecord) { int j; try { if ((this.mAvailBackStackIndices == null) || (this.mAvailBackStackIndices.size() <= 0)) { if (this.mBackStackIndices == null) { this.mBackStackIndices = new ArrayList(); } int i = this.mBackStackIndices.size(); if (DEBUG) { Log.v("FragmentManager", "Setting back stack index " + i + " to " + paramBackStackRecord); } this.mBackStackIndices.add(paramBackStackRecord); j = i; } else { int k = ((Integer)this.mAvailBackStackIndices.remove(-1 + this.mAvailBackStackIndices.size())).intValue(); if (DEBUG) { Log.v("FragmentManager", "Adding back stack index " + k + " with " + paramBackStackRecord); } this.mBackStackIndices.set(k, paramBackStackRecord); j = k; } } finally {} return j; } public void attachActivity(FragmentActivity paramFragmentActivity, FragmentContainer paramFragmentContainer, Fragment paramFragment) { if (this.mActivity != null) { throw new IllegalStateException("Already attached"); } this.mActivity = paramFragmentActivity; this.mContainer = paramFragmentContainer; this.mParent = paramFragment; } public void attachFragment(Fragment paramFragment, int paramInt1, int paramInt2) { if (DEBUG) { Log.v("FragmentManager", "attach: " + paramFragment); } if (paramFragment.mDetached) { paramFragment.mDetached = false; if (!paramFragment.mAdded) { if (this.mAdded == null) { this.mAdded = new ArrayList(); } if (this.mAdded.contains(paramFragment)) { throw new IllegalStateException("Fragment already added: " + paramFragment); } if (DEBUG) { Log.v("FragmentManager", "add from attach: " + paramFragment); } this.mAdded.add(paramFragment); paramFragment.mAdded = true; if ((paramFragment.mHasMenu) && (paramFragment.mMenuVisible)) { this.mNeedMenuInvalidate = true; } moveToState(paramFragment, this.mCurState, paramInt1, paramInt2, false); } } } public FragmentTransaction beginTransaction() { return new BackStackRecord(this); } public void detachFragment(Fragment paramFragment, int paramInt1, int paramInt2) { if (DEBUG) { Log.v("FragmentManager", "detach: " + paramFragment); } if (!paramFragment.mDetached) { paramFragment.mDetached = true; if (paramFragment.mAdded) { if (this.mAdded != null) { if (DEBUG) { Log.v("FragmentManager", "remove from detach: " + paramFragment); } this.mAdded.remove(paramFragment); } if ((paramFragment.mHasMenu) && (paramFragment.mMenuVisible)) { this.mNeedMenuInvalidate = true; } paramFragment.mAdded = false; moveToState(paramFragment, 1, paramInt1, paramInt2, false); } } } public void dispatchActivityCreated() { this.mStateSaved = false; moveToState(2, false); } public void dispatchConfigurationChanged(Configuration paramConfiguration) { if (this.mAdded != null) { for (int i = 0; i < this.mAdded.size(); i++) { Fragment localFragment = (Fragment)this.mAdded.get(i); if (localFragment != null) { localFragment.performConfigurationChanged(paramConfiguration); } } } } public boolean dispatchContextItemSelected(MenuItem paramMenuItem) { int i; if (this.mAdded != null) { i = 0; if (i < this.mAdded.size()) { Fragment localFragment = (Fragment)this.mAdded.get(i); if ((localFragment == null) || (!localFragment.performContextItemSelected(paramMenuItem))) {} } } for (boolean bool = true;; bool = false) { return bool; i++; break; } } public void dispatchCreate() { this.mStateSaved = false; moveToState(1, false); } public boolean dispatchCreateOptionsMenu(Menu paramMenu, MenuInflater paramMenuInflater) { boolean bool = false; ArrayList localArrayList = null; if (this.mAdded != null) { for (int j = 0; j < this.mAdded.size(); j++) { Fragment localFragment2 = (Fragment)this.mAdded.get(j); if ((localFragment2 != null) && (localFragment2.performCreateOptionsMenu(paramMenu, paramMenuInflater))) { bool = true; if (localArrayList == null) { localArrayList = new ArrayList(); } localArrayList.add(localFragment2); } } } if (this.mCreatedMenus != null) { for (int i = 0; i < this.mCreatedMenus.size(); i++) { Fragment localFragment1 = (Fragment)this.mCreatedMenus.get(i); if ((localArrayList == null) || (!localArrayList.contains(localFragment1))) { localFragment1.onDestroyOptionsMenu(); } } } this.mCreatedMenus = localArrayList; return bool; } public void dispatchDestroy() { this.mDestroyed = true; execPendingActions(); moveToState(0, false); this.mActivity = null; this.mContainer = null; this.mParent = null; } public void dispatchDestroyView() { moveToState(1, false); } public void dispatchLowMemory() { if (this.mAdded != null) { for (int i = 0; i < this.mAdded.size(); i++) { Fragment localFragment = (Fragment)this.mAdded.get(i); if (localFragment != null) { localFragment.performLowMemory(); } } } } public boolean dispatchOptionsItemSelected(MenuItem paramMenuItem) { int i; if (this.mAdded != null) { i = 0; if (i < this.mAdded.size()) { Fragment localFragment = (Fragment)this.mAdded.get(i); if ((localFragment == null) || (!localFragment.performOptionsItemSelected(paramMenuItem))) {} } } for (boolean bool = true;; bool = false) { return bool; i++; break; } } public void dispatchOptionsMenuClosed(Menu paramMenu) { if (this.mAdded != null) { for (int i = 0; i < this.mAdded.size(); i++) { Fragment localFragment = (Fragment)this.mAdded.get(i); if (localFragment != null) { localFragment.performOptionsMenuClosed(paramMenu); } } } } public void dispatchPause() { moveToState(4, false); } public boolean dispatchPrepareOptionsMenu(Menu paramMenu) { boolean bool = false; if (this.mAdded != null) { for (int i = 0; i < this.mAdded.size(); i++) { Fragment localFragment = (Fragment)this.mAdded.get(i); if ((localFragment != null) && (localFragment.performPrepareOptionsMenu(paramMenu))) { bool = true; } } } return bool; } public void dispatchReallyStop() { moveToState(2, false); } public void dispatchResume() { this.mStateSaved = false; moveToState(5, false); } public void dispatchStart() { this.mStateSaved = false; moveToState(4, false); } public void dispatchStop() { this.mStateSaved = true; moveToState(3, false); } public void dump(String paramString, FileDescriptor paramFileDescriptor, PrintWriter paramPrintWriter, String[] paramArrayOfString) { String str = paramString + " "; if (this.mActive != null) { int i6 = this.mActive.size(); if (i6 > 0) { paramPrintWriter.print(paramString); paramPrintWriter.print("Active Fragments in "); paramPrintWriter.print(Integer.toHexString(System.identityHashCode(this))); paramPrintWriter.println(":"); for (int i7 = 0; i7 < i6; i7++) { Fragment localFragment3 = (Fragment)this.mActive.get(i7); paramPrintWriter.print(paramString); paramPrintWriter.print(" #"); paramPrintWriter.print(i7); paramPrintWriter.print(": "); paramPrintWriter.println(localFragment3); if (localFragment3 != null) { localFragment3.dump(str, paramFileDescriptor, paramPrintWriter, paramArrayOfString); } } } } if (this.mAdded != null) { int i4 = this.mAdded.size(); if (i4 > 0) { paramPrintWriter.print(paramString); paramPrintWriter.println("Added Fragments:"); for (int i5 = 0; i5 < i4; i5++) { Fragment localFragment2 = (Fragment)this.mAdded.get(i5); paramPrintWriter.print(paramString); paramPrintWriter.print(" #"); paramPrintWriter.print(i5); paramPrintWriter.print(": "); paramPrintWriter.println(localFragment2.toString()); } } } if (this.mCreatedMenus != null) { int i2 = this.mCreatedMenus.size(); if (i2 > 0) { paramPrintWriter.print(paramString); paramPrintWriter.println("Fragments Created Menus:"); for (int i3 = 0; i3 < i2; i3++) { Fragment localFragment1 = (Fragment)this.mCreatedMenus.get(i3); paramPrintWriter.print(paramString); paramPrintWriter.print(" #"); paramPrintWriter.print(i3); paramPrintWriter.print(": "); paramPrintWriter.println(localFragment1.toString()); } } } if (this.mBackStack != null) { int n = this.mBackStack.size(); if (n > 0) { paramPrintWriter.print(paramString); paramPrintWriter.println("Back Stack:"); for (int i1 = 0; i1 < n; i1++) { BackStackRecord localBackStackRecord2 = (BackStackRecord)this.mBackStack.get(i1); paramPrintWriter.print(paramString); paramPrintWriter.print(" #"); paramPrintWriter.print(i1); paramPrintWriter.print(": "); paramPrintWriter.println(localBackStackRecord2.toString()); localBackStackRecord2.dump(str, paramFileDescriptor, paramPrintWriter, paramArrayOfString); } } } try { if (this.mBackStackIndices != null) { int k = this.mBackStackIndices.size(); if (k > 0) { paramPrintWriter.print(paramString); paramPrintWriter.println("Back Stack Indices:"); for (int m = 0; m < k; m++) { BackStackRecord localBackStackRecord1 = (BackStackRecord)this.mBackStackIndices.get(m); paramPrintWriter.print(paramString); paramPrintWriter.print(" #"); paramPrintWriter.print(m); paramPrintWriter.print(": "); paramPrintWriter.println(localBackStackRecord1); } } } if ((this.mAvailBackStackIndices != null) && (this.mAvailBackStackIndices.size() > 0)) { paramPrintWriter.print(paramString); paramPrintWriter.print("mAvailBackStackIndices: "); paramPrintWriter.println(Arrays.toString(this.mAvailBackStackIndices.toArray())); } if (this.mPendingActions != null) { int i = this.mPendingActions.size(); if (i > 0) { paramPrintWriter.print(paramString); paramPrintWriter.println("Pending Actions:"); for (int j = 0; j < i; j++) { Runnable localRunnable = (Runnable)this.mPendingActions.get(j); paramPrintWriter.print(paramString); paramPrintWriter.print(" #"); paramPrintWriter.print(j); paramPrintWriter.print(": "); paramPrintWriter.println(localRunnable); } } } paramPrintWriter.print(paramString); } finally {} paramPrintWriter.println("FragmentManager misc state:"); paramPrintWriter.print(paramString); paramPrintWriter.print(" mActivity="); paramPrintWriter.println(this.mActivity); paramPrintWriter.print(paramString); paramPrintWriter.print(" mContainer="); paramPrintWriter.println(this.mContainer); if (this.mParent != null) { paramPrintWriter.print(paramString); paramPrintWriter.print(" mParent="); paramPrintWriter.println(this.mParent); } paramPrintWriter.print(paramString); paramPrintWriter.print(" mCurState="); paramPrintWriter.print(this.mCurState); paramPrintWriter.print(" mStateSaved="); paramPrintWriter.print(this.mStateSaved); paramPrintWriter.print(" mDestroyed="); paramPrintWriter.println(this.mDestroyed); if (this.mNeedMenuInvalidate) { paramPrintWriter.print(paramString); paramPrintWriter.print(" mNeedMenuInvalidate="); paramPrintWriter.println(this.mNeedMenuInvalidate); } if (this.mNoTransactionsBecause != null) { paramPrintWriter.print(paramString); paramPrintWriter.print(" mNoTransactionsBecause="); paramPrintWriter.println(this.mNoTransactionsBecause); } if ((this.mAvailIndices != null) && (this.mAvailIndices.size() > 0)) { paramPrintWriter.print(paramString); paramPrintWriter.print(" mAvailIndices: "); paramPrintWriter.println(Arrays.toString(this.mAvailIndices.toArray())); } } /* Error */ public void enqueueAction(Runnable paramRunnable, boolean paramBoolean) { // Byte code: // 0: iload_2 // 1: ifne +7 -> 8 // 4: aload_0 // 5: invokespecial 517 android/support/v4/app/FragmentManagerImpl:checkStateLoss ()V // 8: aload_0 // 9: monitorenter // 10: aload_0 // 11: getfield 224 android/support/v4/app/FragmentManagerImpl:mActivity Landroid/support/v4/app/FragmentActivity; // 14: ifnonnull +19 -> 33 // 17: new 139 java/lang/IllegalStateException // 20: dup // 21: ldc_w 519 // 24: invokespecial 144 java/lang/IllegalStateException:<init> (Ljava/lang/String;)V // 27: athrow // 28: astore_3 // 29: aload_0 // 30: monitorexit // 31: aload_3 // 32: athrow // 33: aload_0 // 34: getfield 483 android/support/v4/app/FragmentManagerImpl:mPendingActions Ljava/util/ArrayList; // 37: ifnonnull +14 -> 51 // 40: aload_0 // 41: new 248 java/util/ArrayList // 44: dup // 45: invokespecial 249 java/util/ArrayList:<init> ()V // 48: putfield 483 android/support/v4/app/FragmentManagerImpl:mPendingActions Ljava/util/ArrayList; // 51: aload_0 // 52: getfield 483 android/support/v4/app/FragmentManagerImpl:mPendingActions Ljava/util/ArrayList; // 55: aload_1 // 56: invokevirtual 253 java/util/ArrayList:add (Ljava/lang/Object;)Z // 59: pop // 60: aload_0 // 61: getfield 483 android/support/v4/app/FragmentManagerImpl:mPendingActions Ljava/util/ArrayList; // 64: invokevirtual 310 java/util/ArrayList:size ()I // 67: iconst_1 // 68: if_icmpne +32 -> 100 // 71: aload_0 // 72: getfield 224 android/support/v4/app/FragmentManagerImpl:mActivity Landroid/support/v4/app/FragmentActivity; // 75: getfield 523 android/support/v4/app/FragmentActivity:mHandler Landroid/os/Handler; // 78: aload_0 // 79: getfield 134 android/support/v4/app/FragmentManagerImpl:mExecCommit Ljava/lang/Runnable; // 82: invokevirtual 529 android/os/Handler:removeCallbacks (Ljava/lang/Runnable;)V // 85: aload_0 // 86: getfield 224 android/support/v4/app/FragmentManagerImpl:mActivity Landroid/support/v4/app/FragmentActivity; // 89: getfield 523 android/support/v4/app/FragmentActivity:mHandler Landroid/os/Handler; // 92: aload_0 // 93: getfield 134 android/support/v4/app/FragmentManagerImpl:mExecCommit Ljava/lang/Runnable; // 96: invokevirtual 533 android/os/Handler:post (Ljava/lang/Runnable;)Z // 99: pop // 100: aload_0 // 101: monitorexit // 102: return // Local variable table: // start length slot name signature // 0 103 0 this FragmentManagerImpl // 0 103 1 paramRunnable Runnable // 0 103 2 paramBoolean boolean // 28 4 3 localObject Object // Exception table: // from to target type // 10 31 28 finally // 33 102 28 finally } public boolean execPendingActions() { if (this.mExecutingActions) { throw new IllegalStateException("Recursive entry to executePendingTransactions"); } if (Looper.myLooper() != this.mActivity.mHandler.getLooper()) { throw new IllegalStateException("Must be called from main thread of process"); } boolean bool2; for (boolean bool1 = false;; bool1 = true) { try { if ((this.mPendingActions == null) || (this.mPendingActions.size() == 0)) { if (!this.mHavePendingDeferredStart) { return bool1; } bool2 = false; for (int i = 0; i < this.mActive.size(); i++) { Fragment localFragment = (Fragment)this.mActive.get(i); if ((localFragment != null) && (localFragment.mLoaderManager != null)) { bool2 |= localFragment.mLoaderManager.hasRunningLoaders(); } } } int j = this.mPendingActions.size(); if ((this.mTmpActions == null) || (this.mTmpActions.length < j)) { this.mTmpActions = new Runnable[j]; } this.mPendingActions.toArray(this.mTmpActions); this.mPendingActions.clear(); this.mActivity.mHandler.removeCallbacks(this.mExecCommit); this.mExecutingActions = true; for (int k = 0; k < j; k++) { this.mTmpActions[k].run(); this.mTmpActions[k] = null; } this.mExecutingActions = false; } finally {} } if (!bool2) { this.mHavePendingDeferredStart = false; startPendingDeferredFragments(); } return bool1; } public boolean executePendingTransactions() { return execPendingActions(); } public Fragment findFragmentById(int paramInt) { int j; Fragment localFragment; if (this.mAdded != null) { j = -1 + this.mAdded.size(); if (j >= 0) { localFragment = (Fragment)this.mAdded.get(j); if ((localFragment == null) || (localFragment.mFragmentId != paramInt)) {} } } for (;;) { return localFragment; j--; break; if (this.mActive != null) { for (int i = -1 + this.mActive.size();; i--) { if (i < 0) { break label109; } localFragment = (Fragment)this.mActive.get(i); if ((localFragment != null) && (localFragment.mFragmentId == paramInt)) { break; } } } label109: localFragment = null; } } public Fragment findFragmentByTag(String paramString) { int j; Fragment localFragment; if ((this.mAdded != null) && (paramString != null)) { j = -1 + this.mAdded.size(); if (j >= 0) { localFragment = (Fragment)this.mAdded.get(j); if ((localFragment == null) || (!paramString.equals(localFragment.mTag))) {} } } for (;;) { return localFragment; j--; break; if ((this.mActive != null) && (paramString != null)) { for (int i = -1 + this.mActive.size();; i--) { if (i < 0) { break label123; } localFragment = (Fragment)this.mActive.get(i); if ((localFragment != null) && (paramString.equals(localFragment.mTag))) { break; } } } label123: localFragment = null; } } public Fragment findFragmentByWho(String paramString) { int i; Fragment localFragment1; if ((this.mActive != null) && (paramString != null)) { i = -1 + this.mActive.size(); if (i >= 0) { Fragment localFragment2 = (Fragment)this.mActive.get(i); if (localFragment2 != null) { localFragment1 = localFragment2.findFragmentByWho(paramString); if (localFragment1 == null) {} } } } for (;;) { return localFragment1; i--; break; localFragment1 = null; } } public void freeBackStackIndex(int paramInt) { try { this.mBackStackIndices.set(paramInt, null); if (this.mAvailBackStackIndices == null) { this.mAvailBackStackIndices = new ArrayList(); } if (DEBUG) { Log.v("FragmentManager", "Freeing back stack index " + paramInt); } this.mAvailBackStackIndices.add(Integer.valueOf(paramInt)); return; } finally { localObject = finally; throw localObject; } } public FragmentManager.BackStackEntry getBackStackEntryAt(int paramInt) { return (FragmentManager.BackStackEntry)this.mBackStack.get(paramInt); } public int getBackStackEntryCount() { if (this.mBackStack != null) {} for (int i = this.mBackStack.size();; i = 0) { return i; } } public Fragment getFragment(Bundle paramBundle, String paramString) { int i = paramBundle.getInt(paramString, -1); Fragment localFragment; if (i == -1) { localFragment = null; } for (;;) { return localFragment; if (i >= this.mActive.size()) { throwException(new IllegalStateException("Fragement no longer exists for key " + paramString + ": index " + i)); } localFragment = (Fragment)this.mActive.get(i); if (localFragment == null) { throwException(new IllegalStateException("Fragement no longer exists for key " + paramString + ": index " + i)); } } } public void hideFragment(Fragment paramFragment, int paramInt1, int paramInt2) { if (DEBUG) { Log.v("FragmentManager", "hide: " + paramFragment); } if (!paramFragment.mHidden) { paramFragment.mHidden = true; if (paramFragment.mView != null) { Animation localAnimation = loadAnimation(paramFragment, paramInt1, true, paramInt2); if (localAnimation != null) { paramFragment.mView.startAnimation(localAnimation); } paramFragment.mView.setVisibility(8); } if ((paramFragment.mAdded) && (paramFragment.mHasMenu) && (paramFragment.mMenuVisible)) { this.mNeedMenuInvalidate = true; } paramFragment.onHiddenChanged(true); } } Animation loadAnimation(Fragment paramFragment, int paramInt1, boolean paramBoolean, int paramInt2) { Object localObject = paramFragment.onCreateAnimation(paramInt1, paramBoolean, paramFragment.mNextAnim); if (localObject != null) {} for (;;) { return localObject; if (paramFragment.mNextAnim != 0) { Animation localAnimation = AnimationUtils.loadAnimation(this.mActivity, paramFragment.mNextAnim); if (localAnimation != null) { localObject = localAnimation; continue; } } if (paramInt1 == 0) { localObject = null; } else { int i = transitToStyleIndex(paramInt1, paramBoolean); if (i < 0) { localObject = null; } else { switch (i) { default: if ((paramInt2 == 0) && (this.mActivity.getWindow() != null)) { paramInt2 = this.mActivity.getWindow().getAttributes().windowAnimations; } if (paramInt2 == 0) { localObject = null; } break; case 1: localObject = makeOpenCloseAnimation(this.mActivity, 1.125F, 1.0F, 0.0F, 1.0F); break; case 2: localObject = makeOpenCloseAnimation(this.mActivity, 1.0F, 0.975F, 1.0F, 0.0F); break; case 3: localObject = makeOpenCloseAnimation(this.mActivity, 0.975F, 1.0F, 0.0F, 1.0F); break; case 4: localObject = makeOpenCloseAnimation(this.mActivity, 1.0F, 1.075F, 1.0F, 0.0F); break; case 5: localObject = makeFadeAnimation(this.mActivity, 0.0F, 1.0F); break; case 6: localObject = makeFadeAnimation(this.mActivity, 1.0F, 0.0F); continue; localObject = null; } } } } } void makeActive(Fragment paramFragment) { if (paramFragment.mIndex >= 0) {} label147: for (;;) { return; if ((this.mAvailIndices == null) || (this.mAvailIndices.size() <= 0)) { if (this.mActive == null) { this.mActive = new ArrayList(); } paramFragment.setIndex(this.mActive.size(), this.mParent); this.mActive.add(paramFragment); } for (;;) { if (!DEBUG) { break label147; } Log.v("FragmentManager", "Allocated fragment index " + paramFragment); break; paramFragment.setIndex(((Integer)this.mAvailIndices.remove(-1 + this.mAvailIndices.size())).intValue(), this.mParent); this.mActive.set(paramFragment.mIndex, paramFragment); } } } void makeInactive(Fragment paramFragment) { if (paramFragment.mIndex < 0) {} for (;;) { return; if (DEBUG) { Log.v("FragmentManager", "Freeing fragment index " + paramFragment); } this.mActive.set(paramFragment.mIndex, null); if (this.mAvailIndices == null) { this.mAvailIndices = new ArrayList(); } this.mAvailIndices.add(Integer.valueOf(paramFragment.mIndex)); this.mActivity.invalidateSupportFragment(paramFragment.mWho); paramFragment.initState(); } } void moveToState(int paramInt1, int paramInt2, int paramInt3, boolean paramBoolean) { if ((this.mActivity == null) && (paramInt1 != 0)) { throw new IllegalStateException("No activity"); } if ((!paramBoolean) && (this.mCurState == paramInt1)) {} for (;;) { return; this.mCurState = paramInt1; if (this.mActive != null) { boolean bool = false; for (int i = 0; i < this.mActive.size(); i++) { Fragment localFragment = (Fragment)this.mActive.get(i); if (localFragment != null) { moveToState(localFragment, paramInt1, paramInt2, paramInt3, false); if (localFragment.mLoaderManager != null) { bool |= localFragment.mLoaderManager.hasRunningLoaders(); } } } if (!bool) { startPendingDeferredFragments(); } if ((this.mNeedMenuInvalidate) && (this.mActivity != null) && (this.mCurState == 5)) { this.mActivity.supportInvalidateOptionsMenu(); this.mNeedMenuInvalidate = false; } } } } void moveToState(int paramInt, boolean paramBoolean) { moveToState(paramInt, 0, 0, paramBoolean); } void moveToState(Fragment paramFragment) { moveToState(paramFragment, this.mCurState, 0, 0, false); } void moveToState(final Fragment paramFragment, int paramInt1, int paramInt2, int paramInt3, boolean paramBoolean) { if (((!paramFragment.mAdded) || (paramFragment.mDetached)) && (paramInt1 > 1)) { paramInt1 = 1; } if ((paramFragment.mRemoving) && (paramInt1 > paramFragment.mState)) { paramInt1 = paramFragment.mState; } if ((paramFragment.mDeferStart) && (paramFragment.mState < 4) && (paramInt1 > 3)) { paramInt1 = 3; } if (paramFragment.mState < paramInt1) { if ((paramFragment.mFromLayout) && (!paramFragment.mInLayout)) { return; } if (paramFragment.mAnimatingAway != null) { paramFragment.mAnimatingAway = null; moveToState(paramFragment, paramFragment.mStateAfterAnimating, 0, 0, true); } switch (paramFragment.mState) { } } for (;;) { paramFragment.mState = paramInt1; break; if (DEBUG) { Log.v("FragmentManager", "moveto CREATED: " + paramFragment); } if (paramFragment.mSavedFragmentState != null) { paramFragment.mSavedViewState = paramFragment.mSavedFragmentState.getSparseParcelableArray("android:view_state"); paramFragment.mTarget = getFragment(paramFragment.mSavedFragmentState, "android:target_state"); if (paramFragment.mTarget != null) { paramFragment.mTargetRequestCode = paramFragment.mSavedFragmentState.getInt("android:target_req_state", 0); } paramFragment.mUserVisibleHint = paramFragment.mSavedFragmentState.getBoolean("android:user_visible_hint", true); if (!paramFragment.mUserVisibleHint) { paramFragment.mDeferStart = true; if (paramInt1 > 3) { paramInt1 = 3; } } } paramFragment.mActivity = this.mActivity; paramFragment.mParentFragment = this.mParent; if (this.mParent != null) {} for (FragmentManagerImpl localFragmentManagerImpl = this.mParent.mChildFragmentManager;; localFragmentManagerImpl = this.mActivity.mFragments) { paramFragment.mFragmentManager = localFragmentManagerImpl; paramFragment.mCalled = false; paramFragment.onAttach(this.mActivity); if (paramFragment.mCalled) { break; } throw new SuperNotCalledException("Fragment " + paramFragment + " did not call through to super.onAttach()"); } if (paramFragment.mParentFragment == null) { this.mActivity.onAttachFragment(paramFragment); } if (!paramFragment.mRetaining) { paramFragment.performCreate(paramFragment.mSavedFragmentState); } paramFragment.mRetaining = false; if (paramFragment.mFromLayout) { paramFragment.mView = paramFragment.performCreateView(paramFragment.getLayoutInflater(paramFragment.mSavedFragmentState), null, paramFragment.mSavedFragmentState); if (paramFragment.mView != null) { paramFragment.mInnerView = paramFragment.mView; paramFragment.mView = NoSaveStateFrameLayout.wrap(paramFragment.mView); if (paramFragment.mHidden) { paramFragment.mView.setVisibility(8); } paramFragment.onViewCreated(paramFragment.mView, paramFragment.mSavedFragmentState); } } else { label497: if (paramInt1 > 1) { if (DEBUG) { Log.v("FragmentManager", "moveto ACTIVITY_CREATED: " + paramFragment); } if (!paramFragment.mFromLayout) { ViewGroup localViewGroup = null; if (paramFragment.mContainerId != 0) { localViewGroup = (ViewGroup)this.mContainer.findViewById(paramFragment.mContainerId); if ((localViewGroup == null) && (!paramFragment.mRestored)) { throwException(new IllegalArgumentException("No view found for id 0x" + Integer.toHexString(paramFragment.mContainerId) + " (" + paramFragment.getResources().getResourceName(paramFragment.mContainerId) + ") for fragment " + paramFragment)); } } paramFragment.mContainer = localViewGroup; paramFragment.mView = paramFragment.performCreateView(paramFragment.getLayoutInflater(paramFragment.mSavedFragmentState), localViewGroup, paramFragment.mSavedFragmentState); if (paramFragment.mView == null) { break label905; } paramFragment.mInnerView = paramFragment.mView; paramFragment.mView = NoSaveStateFrameLayout.wrap(paramFragment.mView); if (localViewGroup != null) { Animation localAnimation2 = loadAnimation(paramFragment, paramInt2, true, paramInt3); if (localAnimation2 != null) { paramFragment.mView.startAnimation(localAnimation2); } localViewGroup.addView(paramFragment.mView); } if (paramFragment.mHidden) { paramFragment.mView.setVisibility(8); } paramFragment.onViewCreated(paramFragment.mView, paramFragment.mSavedFragmentState); } } } for (;;) { paramFragment.performActivityCreated(paramFragment.mSavedFragmentState); if (paramFragment.mView != null) { paramFragment.restoreViewState(paramFragment.mSavedFragmentState); } paramFragment.mSavedFragmentState = null; if (paramInt1 > 3) { if (DEBUG) { Log.v("FragmentManager", "moveto STARTED: " + paramFragment); } paramFragment.performStart(); } if (paramInt1 <= 4) { break; } if (DEBUG) { Log.v("FragmentManager", "moveto RESUMED: " + paramFragment); } paramFragment.mResumed = true; paramFragment.performResume(); paramFragment.mSavedFragmentState = null; paramFragment.mSavedViewState = null; break; paramFragment.mInnerView = null; break label497; label905: paramFragment.mInnerView = null; } if (paramFragment.mState > paramInt1) { switch (paramFragment.mState) { default: break; case 1: case 5: case 4: case 3: case 2: while (paramInt1 < 1) { if ((this.mDestroyed) && (paramFragment.mAnimatingAway != null)) { View localView = paramFragment.mAnimatingAway; paramFragment.mAnimatingAway = null; localView.clearAnimation(); } if (paramFragment.mAnimatingAway == null) { break label1325; } paramFragment.mStateAfterAnimating = paramInt1; paramInt1 = 1; break; if (paramInt1 < 5) { if (DEBUG) { Log.v("FragmentManager", "movefrom RESUMED: " + paramFragment); } paramFragment.performPause(); paramFragment.mResumed = false; } if (paramInt1 < 4) { if (DEBUG) { Log.v("FragmentManager", "movefrom STARTED: " + paramFragment); } paramFragment.performStop(); } if (paramInt1 < 3) { if (DEBUG) { Log.v("FragmentManager", "movefrom STOPPED: " + paramFragment); } paramFragment.performReallyStop(); } if (paramInt1 < 2) { if (DEBUG) { Log.v("FragmentManager", "movefrom ACTIVITY_CREATED: " + paramFragment); } if ((paramFragment.mView != null) && (!this.mActivity.isFinishing()) && (paramFragment.mSavedViewState == null)) { saveFragmentViewState(paramFragment); } paramFragment.performDestroyView(); if ((paramFragment.mView != null) && (paramFragment.mContainer != null)) { Animation localAnimation1 = null; if ((this.mCurState > 0) && (!this.mDestroyed)) { localAnimation1 = loadAnimation(paramFragment, paramInt2, false, paramInt3); } if (localAnimation1 != null) { paramFragment.mAnimatingAway = paramFragment.mView; paramFragment.mStateAfterAnimating = paramInt1; localAnimation1.setAnimationListener(new Animation.AnimationListener() { public void onAnimationEnd(Animation paramAnonymousAnimation) { if (paramFragment.mAnimatingAway != null) { paramFragment.mAnimatingAway = null; FragmentManagerImpl.this.moveToState(paramFragment, paramFragment.mStateAfterAnimating, 0, 0, false); } } public void onAnimationRepeat(Animation paramAnonymousAnimation) {} public void onAnimationStart(Animation paramAnonymousAnimation) {} }); paramFragment.mView.startAnimation(localAnimation1); } paramFragment.mContainer.removeView(paramFragment.mView); } paramFragment.mContainer = null; paramFragment.mView = null; paramFragment.mInnerView = null; } } label1325: if (DEBUG) { Log.v("FragmentManager", "movefrom CREATED: " + paramFragment); } if (!paramFragment.mRetaining) { paramFragment.performDestroy(); } paramFragment.mCalled = false; paramFragment.onDetach(); if (!paramFragment.mCalled) { throw new SuperNotCalledException("Fragment " + paramFragment + " did not call through to super.onDetach()"); } if (!paramBoolean) { if (!paramFragment.mRetaining) { makeInactive(paramFragment); } else { paramFragment.mActivity = null; paramFragment.mFragmentManager = null; } } break; } } } } public void noteStateNotSaved() { this.mStateSaved = false; } public void performPendingDeferredStart(Fragment paramFragment) { if (paramFragment.mDeferStart) { if (!this.mExecutingActions) { break label20; } this.mHavePendingDeferredStart = true; } for (;;) { return; label20: paramFragment.mDeferStart = false; moveToState(paramFragment, this.mCurState, 0, 0, false); } } public void popBackStack() { enqueueAction(new Runnable() { public void run() { FragmentManagerImpl.this.popBackStackState(FragmentManagerImpl.this.mActivity.mHandler, null, -1, 0); } }, false); } public void popBackStack(final int paramInt1, final int paramInt2) { if (paramInt1 < 0) { throw new IllegalArgumentException("Bad id: " + paramInt1); } enqueueAction(new Runnable() { public void run() { FragmentManagerImpl.this.popBackStackState(FragmentManagerImpl.this.mActivity.mHandler, null, paramInt1, paramInt2); } }, false); } public void popBackStack(final String paramString, final int paramInt) { enqueueAction(new Runnable() { public void run() { FragmentManagerImpl.this.popBackStackState(FragmentManagerImpl.this.mActivity.mHandler, paramString, -1, paramInt); } }, false); } public boolean popBackStackImmediate() { checkStateLoss(); executePendingTransactions(); return popBackStackState(this.mActivity.mHandler, null, -1, 0); } public boolean popBackStackImmediate(int paramInt1, int paramInt2) { checkStateLoss(); executePendingTransactions(); if (paramInt1 < 0) { throw new IllegalArgumentException("Bad id: " + paramInt1); } return popBackStackState(this.mActivity.mHandler, null, paramInt1, paramInt2); } public boolean popBackStackImmediate(String paramString, int paramInt) { checkStateLoss(); executePendingTransactions(); return popBackStackState(this.mActivity.mHandler, paramString, -1, paramInt); } boolean popBackStackState(Handler paramHandler, String paramString, int paramInt1, int paramInt2) { boolean bool1 = false; if (this.mBackStack == null) { break label130; } label10: int n; do { return bool1; if ((paramString != null) || (paramInt1 >= 0) || ((paramInt2 & 0x1) != 0)) { break; } n = -1 + this.mBackStack.size(); } while (n < 0); ((BackStackRecord)this.mBackStack.remove(n)).popFromBackStack(true); reportBackStackChanged(); for (;;) { bool1 = true; break label10; int i = -1; if ((paramString != null) || (paramInt1 >= 0)) { for (i = -1 + this.mBackStack.size();; i--) { BackStackRecord localBackStackRecord3; if (i >= 0) { localBackStackRecord3 = (BackStackRecord)this.mBackStack.get(i); if ((paramString == null) || (!paramString.equals(localBackStackRecord3.getName()))) {} } else { label130: if (i < 0) { break label10; } if ((paramInt2 & 0x1) == 0) { break label218; } i--; while (i >= 0) { BackStackRecord localBackStackRecord2 = (BackStackRecord)this.mBackStack.get(i); if (((paramString == null) || (!paramString.equals(localBackStackRecord2.getName()))) && ((paramInt1 < 0) || (paramInt1 != localBackStackRecord2.mIndex))) { break; } i--; } } if ((paramInt1 >= 0) && (paramInt1 == localBackStackRecord3.mIndex)) { break; } } } label218: if (i == -1 + this.mBackStack.size()) { break label10; } ArrayList localArrayList = new ArrayList(); for (int j = -1 + this.mBackStack.size(); j > i; j--) { localArrayList.add(this.mBackStack.remove(j)); } int k = -1 + localArrayList.size(); int m = 0; if (m <= k) { if (DEBUG) { Log.v("FragmentManager", "Popping back stack state: " + localArrayList.get(m)); } BackStackRecord localBackStackRecord1 = (BackStackRecord)localArrayList.get(m); if (m == k) {} for (boolean bool2 = true;; bool2 = false) { localBackStackRecord1.popFromBackStack(bool2); m++; break; } } reportBackStackChanged(); } } public void putFragment(Bundle paramBundle, String paramString, Fragment paramFragment) { if (paramFragment.mIndex < 0) { throwException(new IllegalStateException("Fragment " + paramFragment + " is not currently in the FragmentManager")); } paramBundle.putInt(paramString, paramFragment.mIndex); } public void removeFragment(Fragment paramFragment, int paramInt1, int paramInt2) { if (DEBUG) { Log.v("FragmentManager", "remove: " + paramFragment + " nesting=" + paramFragment.mBackStackNesting); } int i; if (!paramFragment.isInBackStack()) { i = 1; if ((!paramFragment.mDetached) || (i != 0)) { if (this.mAdded != null) { this.mAdded.remove(paramFragment); } if ((paramFragment.mHasMenu) && (paramFragment.mMenuVisible)) { this.mNeedMenuInvalidate = true; } paramFragment.mAdded = false; paramFragment.mRemoving = true; if (i == 0) { break label137; } } } label137: for (int j = 0;; j = 1) { moveToState(paramFragment, j, paramInt1, paramInt2, false); return; i = 0; break; } } public void removeOnBackStackChangedListener(FragmentManager.OnBackStackChangedListener paramOnBackStackChangedListener) { if (this.mBackStackChangeListeners != null) { this.mBackStackChangeListeners.remove(paramOnBackStackChangedListener); } } void reportBackStackChanged() { if (this.mBackStackChangeListeners != null) { for (int i = 0; i < this.mBackStackChangeListeners.size(); i++) { ((FragmentManager.OnBackStackChangedListener)this.mBackStackChangeListeners.get(i)).onBackStackChanged(); } } } void restoreAllState(Parcelable paramParcelable, ArrayList<Fragment> paramArrayList) { if (paramParcelable == null) {} for (;;) { return; FragmentManagerState localFragmentManagerState = (FragmentManagerState)paramParcelable; if (localFragmentManagerState.mActive != null) { if (paramArrayList != null) { for (int n = 0; n < paramArrayList.size(); n++) { Fragment localFragment4 = (Fragment)paramArrayList.get(n); if (DEBUG) { Log.v("FragmentManager", "restoreAllState: re-attaching retained " + localFragment4); } FragmentState localFragmentState2 = localFragmentManagerState.mActive[localFragment4.mIndex]; localFragmentState2.mInstance = localFragment4; localFragment4.mSavedViewState = null; localFragment4.mBackStackNesting = 0; localFragment4.mInLayout = false; localFragment4.mAdded = false; localFragment4.mTarget = null; if (localFragmentState2.mSavedFragmentState != null) { localFragmentState2.mSavedFragmentState.setClassLoader(this.mActivity.getClassLoader()); localFragment4.mSavedViewState = localFragmentState2.mSavedFragmentState.getSparseParcelableArray("android:view_state"); } } } this.mActive = new ArrayList(localFragmentManagerState.mActive.length); if (this.mAvailIndices != null) { this.mAvailIndices.clear(); } int i = 0; if (i < localFragmentManagerState.mActive.length) { FragmentState localFragmentState1 = localFragmentManagerState.mActive[i]; if (localFragmentState1 != null) { Fragment localFragment3 = localFragmentState1.instantiate(this.mActivity, this.mParent); if (DEBUG) { Log.v("FragmentManager", "restoreAllState: active #" + i + ": " + localFragment3); } this.mActive.add(localFragment3); localFragmentState1.mInstance = null; } for (;;) { i++; break; this.mActive.add(null); if (this.mAvailIndices == null) { this.mAvailIndices = new ArrayList(); } if (DEBUG) { Log.v("FragmentManager", "restoreAllState: avail #" + i); } this.mAvailIndices.add(Integer.valueOf(i)); } } if (paramArrayList != null) { int m = 0; if (m < paramArrayList.size()) { Fragment localFragment2 = (Fragment)paramArrayList.get(m); if (localFragment2.mTargetIndex >= 0) { if (localFragment2.mTargetIndex >= this.mActive.size()) { break label460; } } for (localFragment2.mTarget = ((Fragment)this.mActive.get(localFragment2.mTargetIndex));; localFragment2.mTarget = null) { m++; break; label460: Log.w("FragmentManager", "Re-attaching retained fragment " + localFragment2 + " target no longer exists: " + localFragment2.mTargetIndex); } } } if (localFragmentManagerState.mAdded != null) { this.mAdded = new ArrayList(localFragmentManagerState.mAdded.length); for (int k = 0; k < localFragmentManagerState.mAdded.length; k++) { Fragment localFragment1 = (Fragment)this.mActive.get(localFragmentManagerState.mAdded[k]); if (localFragment1 == null) { throwException(new IllegalStateException("No instantiated fragment for index #" + localFragmentManagerState.mAdded[k])); } localFragment1.mAdded = true; if (DEBUG) { Log.v("FragmentManager", "restoreAllState: added #" + k + ": " + localFragment1); } if (this.mAdded.contains(localFragment1)) { throw new IllegalStateException("Already added!"); } this.mAdded.add(localFragment1); } } this.mAdded = null; if (localFragmentManagerState.mBackStack != null) { this.mBackStack = new ArrayList(localFragmentManagerState.mBackStack.length); for (int j = 0; j < localFragmentManagerState.mBackStack.length; j++) { BackStackRecord localBackStackRecord = localFragmentManagerState.mBackStack[j].instantiate(this); if (DEBUG) { Log.v("FragmentManager", "restoreAllState: back stack #" + j + " (index " + localBackStackRecord.mIndex + "): " + localBackStackRecord); localBackStackRecord.dump(" ", new PrintWriter(new LogWriter("FragmentManager")), false); } this.mBackStack.add(localBackStackRecord); if (localBackStackRecord.mIndex >= 0) { setBackStackIndex(localBackStackRecord.mIndex, localBackStackRecord); } } } else { this.mBackStack = null; } } } } ArrayList<Fragment> retainNonConfig() { ArrayList localArrayList = null; if (this.mActive != null) { int i = 0; if (i < this.mActive.size()) { Fragment localFragment = (Fragment)this.mActive.get(i); if ((localFragment != null) && (localFragment.mRetainInstance)) { if (localArrayList == null) { localArrayList = new ArrayList(); } localArrayList.add(localFragment); localFragment.mRetaining = true; if (localFragment.mTarget == null) { break label128; } } label128: for (int j = localFragment.mTarget.mIndex;; j = -1) { localFragment.mTargetIndex = j; if (DEBUG) { Log.v("FragmentManager", "retainNonConfig: keeping retained " + localFragment); } i++; break; } } } return localArrayList; } Parcelable saveAllState() { Object localObject = null; execPendingActions(); if (HONEYCOMB) { this.mStateSaved = true; } if ((this.mActive == null) || (this.mActive.size() <= 0)) {} for (;;) { return localObject; int i = this.mActive.size(); FragmentState[] arrayOfFragmentState = new FragmentState[i]; int j = 0; int k = 0; if (k < i) { Fragment localFragment = (Fragment)this.mActive.get(k); FragmentState localFragmentState; if (localFragment != null) { if (localFragment.mIndex < 0) { throwException(new IllegalStateException("Failure saving state: active " + localFragment + " has cleared index: " + localFragment.mIndex)); } j = 1; localFragmentState = new FragmentState(localFragment); arrayOfFragmentState[k] = localFragmentState; if ((localFragment.mState <= 0) || (localFragmentState.mSavedFragmentState != null)) { break label361; } localFragmentState.mSavedFragmentState = saveFragmentBasicState(localFragment); if (localFragment.mTarget != null) { if (localFragment.mTarget.mIndex < 0) { throwException(new IllegalStateException("Failure saving state: " + localFragment + " has target not in fragment manager: " + localFragment.mTarget)); } if (localFragmentState.mSavedFragmentState == null) { localFragmentState.mSavedFragmentState = new Bundle(); } putFragment(localFragmentState.mSavedFragmentState, "android:target_state", localFragment.mTarget); if (localFragment.mTargetRequestCode != 0) { localFragmentState.mSavedFragmentState.putInt("android:target_req_state", localFragment.mTargetRequestCode); } } } for (;;) { if (DEBUG) { Log.v("FragmentManager", "Saved state of " + localFragment + ": " + localFragmentState.mSavedFragmentState); } k++; break; label361: localFragmentState.mSavedFragmentState = localFragment.mSavedFragmentState; } } if (j == 0) { if (DEBUG) { Log.v("FragmentManager", "saveAllState: no fragments!"); } } else { int[] arrayOfInt = null; BackStackState[] arrayOfBackStackState = null; if (this.mAdded != null) { int i1 = this.mAdded.size(); if (i1 > 0) { arrayOfInt = new int[i1]; for (int i2 = 0; i2 < i1; i2++) { arrayOfInt[i2] = ((Fragment)this.mAdded.get(i2)).mIndex; if (arrayOfInt[i2] < 0) { throwException(new IllegalStateException("Failure saving state: active " + this.mAdded.get(i2) + " has cleared index: " + arrayOfInt[i2])); } if (DEBUG) { Log.v("FragmentManager", "saveAllState: adding fragment #" + i2 + ": " + this.mAdded.get(i2)); } } } } if (this.mBackStack != null) { int m = this.mBackStack.size(); if (m > 0) { arrayOfBackStackState = new BackStackState[m]; for (int n = 0; n < m; n++) { arrayOfBackStackState[n] = new BackStackState(this, (BackStackRecord)this.mBackStack.get(n)); if (DEBUG) { Log.v("FragmentManager", "saveAllState: adding back stack #" + n + ": " + this.mBackStack.get(n)); } } } } localObject = new FragmentManagerState(); ((FragmentManagerState)localObject).mActive = arrayOfFragmentState; ((FragmentManagerState)localObject).mAdded = arrayOfInt; ((FragmentManagerState)localObject).mBackStack = arrayOfBackStackState; } } } Bundle saveFragmentBasicState(Fragment paramFragment) { Bundle localBundle = null; if (this.mStateBundle == null) { this.mStateBundle = new Bundle(); } paramFragment.performSaveInstanceState(this.mStateBundle); if (!this.mStateBundle.isEmpty()) { localBundle = this.mStateBundle; this.mStateBundle = null; } if (paramFragment.mView != null) { saveFragmentViewState(paramFragment); } if (paramFragment.mSavedViewState != null) { if (localBundle == null) { localBundle = new Bundle(); } localBundle.putSparseParcelableArray("android:view_state", paramFragment.mSavedViewState); } if (!paramFragment.mUserVisibleHint) { if (localBundle == null) { localBundle = new Bundle(); } localBundle.putBoolean("android:user_visible_hint", paramFragment.mUserVisibleHint); } return localBundle; } public Fragment.SavedState saveFragmentInstanceState(Fragment paramFragment) { Fragment.SavedState localSavedState = null; if (paramFragment.mIndex < 0) { throwException(new IllegalStateException("Fragment " + paramFragment + " is not currently in the FragmentManager")); } if (paramFragment.mState > 0) { Bundle localBundle = saveFragmentBasicState(paramFragment); if (localBundle != null) { localSavedState = new Fragment.SavedState(localBundle); } } return localSavedState; } void saveFragmentViewState(Fragment paramFragment) { if (paramFragment.mInnerView == null) { return; } if (this.mStateArray == null) { this.mStateArray = new SparseArray(); } for (;;) { paramFragment.mInnerView.saveHierarchyState(this.mStateArray); if (this.mStateArray.size() <= 0) { break; } paramFragment.mSavedViewState = this.mStateArray; this.mStateArray = null; break; this.mStateArray.clear(); } } public void setBackStackIndex(int paramInt, BackStackRecord paramBackStackRecord) { try { if (this.mBackStackIndices == null) { this.mBackStackIndices = new ArrayList(); } int i = this.mBackStackIndices.size(); if (paramInt < i) { if (DEBUG) { Log.v("FragmentManager", "Setting back stack index " + paramInt + " to " + paramBackStackRecord); } this.mBackStackIndices.set(paramInt, paramBackStackRecord); return; } while (i < paramInt) { this.mBackStackIndices.add(null); if (this.mAvailBackStackIndices == null) { this.mAvailBackStackIndices = new ArrayList(); } if (DEBUG) { Log.v("FragmentManager", "Adding available back stack index " + i); } this.mAvailBackStackIndices.add(Integer.valueOf(i)); i++; } if (DEBUG) { Log.v("FragmentManager", "Adding back stack index " + paramInt + " with " + paramBackStackRecord); } this.mBackStackIndices.add(paramBackStackRecord); } finally {} } public void showFragment(Fragment paramFragment, int paramInt1, int paramInt2) { if (DEBUG) { Log.v("FragmentManager", "show: " + paramFragment); } if (paramFragment.mHidden) { paramFragment.mHidden = false; if (paramFragment.mView != null) { Animation localAnimation = loadAnimation(paramFragment, paramInt1, true, paramInt2); if (localAnimation != null) { paramFragment.mView.startAnimation(localAnimation); } paramFragment.mView.setVisibility(0); } if ((paramFragment.mAdded) && (paramFragment.mHasMenu) && (paramFragment.mMenuVisible)) { this.mNeedMenuInvalidate = true; } paramFragment.onHiddenChanged(false); } } void startPendingDeferredFragments() { if (this.mActive == null) {} for (;;) { return; for (int i = 0; i < this.mActive.size(); i++) { Fragment localFragment = (Fragment)this.mActive.get(i); if (localFragment != null) { performPendingDeferredStart(localFragment); } } } } public String toString() { StringBuilder localStringBuilder = new StringBuilder(128); localStringBuilder.append("FragmentManager{"); localStringBuilder.append(Integer.toHexString(System.identityHashCode(this))); localStringBuilder.append(" in "); if (this.mParent != null) { DebugUtils.buildShortClassTag(this.mParent, localStringBuilder); } for (;;) { localStringBuilder.append("}}"); return localStringBuilder.toString(); DebugUtils.buildShortClassTag(this.mActivity, localStringBuilder); } } } /* Location: F:\neembuu\Research\android_apps\output_jar.jar * Qualified Name: android.support.v4.app.FragmentManagerImpl * JD-Core Version: 0.7.0.1 */