Loading core/java/android/app/BackStackRecord.java +23 −19 Original line number Diff line number Diff line Loading @@ -351,17 +351,7 @@ final class BackStackRecord extends FragmentTransaction implements public BackStackRecord(FragmentManagerImpl manager) { mManager = manager; FragmentHostCallback host = manager.mHost; if (host != null) { Context context = host.getContext(); if (context != null) { ApplicationInfo info = context.getApplicationInfo(); if (info != null) { int targetSdkVersion = info.targetSdkVersion; mAllowOptimization = targetSdkVersion > Build.VERSION_CODES.N_MR1; } } } mAllowOptimization = getTargetSdk() > Build.VERSION_CODES.N_MR1; } public int getId() { Loading @@ -377,14 +367,14 @@ final class BackStackRecord extends FragmentTransaction implements } public CharSequence getBreadCrumbTitle() { if (mBreadCrumbTitleRes != 0) { if (mBreadCrumbTitleRes != 0 && mManager.mHost != null) { return mManager.mHost.getContext().getText(mBreadCrumbTitleRes); } return mBreadCrumbTitleText; } public CharSequence getBreadCrumbShortTitle() { if (mBreadCrumbShortTitleRes != 0) { if (mBreadCrumbShortTitleRes != 0 && mManager.mHost != null) { return mManager.mHost.getContext().getText(mBreadCrumbShortTitleRes); } return mBreadCrumbShortTitleText; Loading Loading @@ -414,14 +404,10 @@ final class BackStackRecord extends FragmentTransaction implements } private void doAddOp(int containerViewId, Fragment fragment, String tag, int opcmd) { if (mManager.mHost.getContext() != null) { final int targetSdkVersion = mManager.mHost.getContext().getApplicationInfo().targetSdkVersion; if (getTargetSdk() > Build.VERSION_CODES.N_MR1) { final Class fragmentClass = fragment.getClass(); final int modifiers = fragmentClass.getModifiers(); // TODO: make the check N_MR1 or O if (targetSdkVersion > Build.VERSION_CODES.N && (fragmentClass.isAnonymousClass() || !Modifier.isPublic(modifiers) if ((fragmentClass.isAnonymousClass() || !Modifier.isPublic(modifiers) || (fragmentClass.isMemberClass() && !Modifier.isStatic(modifiers)))) { throw new IllegalStateException("Fragment " + fragmentClass.getCanonicalName() + " must be a public static class to be properly recreated from" Loading Loading @@ -927,4 +913,22 @@ final class BackStackRecord extends FragmentTransaction implements public boolean isEmpty() { return mOps.isEmpty(); } /** * @return the target SDK of the FragmentManager's application info. If the * FragmentManager has been torn down, then 0 is returned. */ private int getTargetSdk() { FragmentHostCallback host = mManager.mHost; if (host != null) { Context context = host.getContext(); if (context != null) { ApplicationInfo info = context.getApplicationInfo(); if (info != null) { return info.targetSdkVersion; } } } return 0; } } Loading
core/java/android/app/BackStackRecord.java +23 −19 Original line number Diff line number Diff line Loading @@ -351,17 +351,7 @@ final class BackStackRecord extends FragmentTransaction implements public BackStackRecord(FragmentManagerImpl manager) { mManager = manager; FragmentHostCallback host = manager.mHost; if (host != null) { Context context = host.getContext(); if (context != null) { ApplicationInfo info = context.getApplicationInfo(); if (info != null) { int targetSdkVersion = info.targetSdkVersion; mAllowOptimization = targetSdkVersion > Build.VERSION_CODES.N_MR1; } } } mAllowOptimization = getTargetSdk() > Build.VERSION_CODES.N_MR1; } public int getId() { Loading @@ -377,14 +367,14 @@ final class BackStackRecord extends FragmentTransaction implements } public CharSequence getBreadCrumbTitle() { if (mBreadCrumbTitleRes != 0) { if (mBreadCrumbTitleRes != 0 && mManager.mHost != null) { return mManager.mHost.getContext().getText(mBreadCrumbTitleRes); } return mBreadCrumbTitleText; } public CharSequence getBreadCrumbShortTitle() { if (mBreadCrumbShortTitleRes != 0) { if (mBreadCrumbShortTitleRes != 0 && mManager.mHost != null) { return mManager.mHost.getContext().getText(mBreadCrumbShortTitleRes); } return mBreadCrumbShortTitleText; Loading Loading @@ -414,14 +404,10 @@ final class BackStackRecord extends FragmentTransaction implements } private void doAddOp(int containerViewId, Fragment fragment, String tag, int opcmd) { if (mManager.mHost.getContext() != null) { final int targetSdkVersion = mManager.mHost.getContext().getApplicationInfo().targetSdkVersion; if (getTargetSdk() > Build.VERSION_CODES.N_MR1) { final Class fragmentClass = fragment.getClass(); final int modifiers = fragmentClass.getModifiers(); // TODO: make the check N_MR1 or O if (targetSdkVersion > Build.VERSION_CODES.N && (fragmentClass.isAnonymousClass() || !Modifier.isPublic(modifiers) if ((fragmentClass.isAnonymousClass() || !Modifier.isPublic(modifiers) || (fragmentClass.isMemberClass() && !Modifier.isStatic(modifiers)))) { throw new IllegalStateException("Fragment " + fragmentClass.getCanonicalName() + " must be a public static class to be properly recreated from" Loading Loading @@ -927,4 +913,22 @@ final class BackStackRecord extends FragmentTransaction implements public boolean isEmpty() { return mOps.isEmpty(); } /** * @return the target SDK of the FragmentManager's application info. If the * FragmentManager has been torn down, then 0 is returned. */ private int getTargetSdk() { FragmentHostCallback host = mManager.mHost; if (host != null) { Context context = host.getContext(); if (context != null) { ApplicationInfo info = context.getApplicationInfo(); if (info != null) { return info.targetSdkVersion; } } } return 0; } }