ADD week 5

This commit is contained in:
2025-03-31 16:33:42 +02:00
parent 86f265f22d
commit bf645048e6
4927 changed files with 544053 additions and 0 deletions

View File

@ -0,0 +1,274 @@
package androidx.fragment;
/* loaded from: classes.dex */
public final class R {
public static final class anim {
public static final int fragment_fast_out_extra_slow_in = 0x7f01001c;
private anim() {
}
}
public static final class animator {
public static final int fragment_close_enter = 0x7f020003;
public static final int fragment_close_exit = 0x7f020004;
public static final int fragment_fade_enter = 0x7f020005;
public static final int fragment_fade_exit = 0x7f020006;
public static final int fragment_open_enter = 0x7f020007;
public static final int fragment_open_exit = 0x7f020008;
private animator() {
}
}
public static final class attr {
public static final int alpha = 0x7f03002e;
public static final int font = 0x7f0301fb;
public static final int fontProviderAuthority = 0x7f0301fd;
public static final int fontProviderCerts = 0x7f0301fe;
public static final int fontProviderFetchStrategy = 0x7f0301ff;
public static final int fontProviderFetchTimeout = 0x7f030200;
public static final int fontProviderPackage = 0x7f030201;
public static final int fontProviderQuery = 0x7f030202;
public static final int fontStyle = 0x7f030204;
public static final int fontVariationSettings = 0x7f030205;
public static final int fontWeight = 0x7f030206;
public static final int ttcIndex = 0x7f0304b6;
private attr() {
}
}
public static final class color {
public static final int notification_action_color_filter = 0x7f0502e9;
public static final int notification_icon_bg_color = 0x7f0502ea;
public static final int ripple_material_light = 0x7f0502f7;
public static final int secondary_text_default_material_light = 0x7f0502f9;
private color() {
}
}
public static final class dimen {
public static final int compat_button_inset_horizontal_material = 0x7f060058;
public static final int compat_button_inset_vertical_material = 0x7f060059;
public static final int compat_button_padding_horizontal_material = 0x7f06005a;
public static final int compat_button_padding_vertical_material = 0x7f06005b;
public static final int compat_control_corner_material = 0x7f06005c;
public static final int compat_notification_large_icon_max_height = 0x7f06005d;
public static final int compat_notification_large_icon_max_width = 0x7f06005e;
public static final int notification_action_icon_size = 0x7f060307;
public static final int notification_action_text_size = 0x7f060308;
public static final int notification_big_circle_margin = 0x7f060309;
public static final int notification_content_margin_start = 0x7f06030a;
public static final int notification_large_icon_height = 0x7f06030b;
public static final int notification_large_icon_width = 0x7f06030c;
public static final int notification_main_column_padding_top = 0x7f06030d;
public static final int notification_media_narrow_margin = 0x7f06030e;
public static final int notification_right_icon_size = 0x7f06030f;
public static final int notification_right_side_padding_top = 0x7f060310;
public static final int notification_small_icon_background_padding = 0x7f060311;
public static final int notification_small_icon_size_as_large = 0x7f060312;
public static final int notification_subtext_size = 0x7f060313;
public static final int notification_top_pad = 0x7f060314;
public static final int notification_top_pad_large_text = 0x7f060315;
private dimen() {
}
}
public static final class drawable {
public static final int notification_action_background = 0x7f0700d0;
public static final int notification_bg = 0x7f0700d1;
public static final int notification_bg_low = 0x7f0700d2;
public static final int notification_bg_low_normal = 0x7f0700d3;
public static final int notification_bg_low_pressed = 0x7f0700d4;
public static final int notification_bg_normal = 0x7f0700d5;
public static final int notification_bg_normal_pressed = 0x7f0700d6;
public static final int notification_icon_background = 0x7f0700d7;
public static final int notification_template_icon_bg = 0x7f0700d8;
public static final int notification_template_icon_low_bg = 0x7f0700d9;
public static final int notification_tile_bg = 0x7f0700da;
public static final int notify_panel_notification_icon_bg = 0x7f0700db;
private drawable() {
}
}
public static final class id {
public static final int accessibility_action_clickable_span = 0x7f08000f;
public static final int accessibility_custom_action_0 = 0x7f080010;
public static final int accessibility_custom_action_1 = 0x7f080011;
public static final int accessibility_custom_action_10 = 0x7f080012;
public static final int accessibility_custom_action_11 = 0x7f080013;
public static final int accessibility_custom_action_12 = 0x7f080014;
public static final int accessibility_custom_action_13 = 0x7f080015;
public static final int accessibility_custom_action_14 = 0x7f080016;
public static final int accessibility_custom_action_15 = 0x7f080017;
public static final int accessibility_custom_action_16 = 0x7f080018;
public static final int accessibility_custom_action_17 = 0x7f080019;
public static final int accessibility_custom_action_18 = 0x7f08001a;
public static final int accessibility_custom_action_19 = 0x7f08001b;
public static final int accessibility_custom_action_2 = 0x7f08001c;
public static final int accessibility_custom_action_20 = 0x7f08001d;
public static final int accessibility_custom_action_21 = 0x7f08001e;
public static final int accessibility_custom_action_22 = 0x7f08001f;
public static final int accessibility_custom_action_23 = 0x7f080020;
public static final int accessibility_custom_action_24 = 0x7f080021;
public static final int accessibility_custom_action_25 = 0x7f080022;
public static final int accessibility_custom_action_26 = 0x7f080023;
public static final int accessibility_custom_action_27 = 0x7f080024;
public static final int accessibility_custom_action_28 = 0x7f080025;
public static final int accessibility_custom_action_29 = 0x7f080026;
public static final int accessibility_custom_action_3 = 0x7f080027;
public static final int accessibility_custom_action_30 = 0x7f080028;
public static final int accessibility_custom_action_31 = 0x7f080029;
public static final int accessibility_custom_action_4 = 0x7f08002a;
public static final int accessibility_custom_action_5 = 0x7f08002b;
public static final int accessibility_custom_action_6 = 0x7f08002c;
public static final int accessibility_custom_action_7 = 0x7f08002d;
public static final int accessibility_custom_action_8 = 0x7f08002e;
public static final int accessibility_custom_action_9 = 0x7f08002f;
public static final int action_container = 0x7f08003a;
public static final int action_divider = 0x7f08003c;
public static final int action_image = 0x7f08003d;
public static final int action_text = 0x7f080043;
public static final int actions = 0x7f080044;
public static final int async = 0x7f080052;
public static final int blocking = 0x7f08005c;
public static final int chronometer = 0x7f080071;
public static final int dialog_button = 0x7f080095;
public static final int forever = 0x7f0800c2;
public static final int fragment_container_view_tag = 0x7f0800c3;
public static final int icon = 0x7f0800d4;
public static final int icon_group = 0x7f0800d5;
public static final int info = 0x7f0800dd;
public static final int italic = 0x7f0800e0;
public static final int line1 = 0x7f0800e9;
public static final int line3 = 0x7f0800ea;
public static final int normal = 0x7f080139;
public static final int notification_background = 0x7f08013b;
public static final int notification_main_column = 0x7f08013c;
public static final int notification_main_column_container = 0x7f08013d;
public static final int right_icon = 0x7f08016b;
public static final int right_side = 0x7f08016c;
public static final int special_effects_controller_view_tag = 0x7f080196;
public static final int tag_accessibility_actions = 0x7f0801ad;
public static final int tag_accessibility_clickable_spans = 0x7f0801ae;
public static final int tag_accessibility_heading = 0x7f0801af;
public static final int tag_accessibility_pane_title = 0x7f0801b0;
public static final int tag_screen_reader_focusable = 0x7f0801b4;
public static final int tag_transition_group = 0x7f0801b6;
public static final int tag_unhandled_key_event_manager = 0x7f0801b7;
public static final int tag_unhandled_key_listeners = 0x7f0801b8;
public static final int text = 0x7f0801ba;
public static final int text2 = 0x7f0801bb;
public static final int time = 0x7f0801ca;
public static final int title = 0x7f0801cb;
public static final int view_tree_lifecycle_owner = 0x7f0801e3;
public static final int view_tree_saved_state_registry_owner = 0x7f0801e5;
public static final int view_tree_view_model_store_owner = 0x7f0801e6;
public static final int visible_removing_fragment_view_tag = 0x7f0801e8;
private id() {
}
}
public static final class integer {
public static final int status_bar_notification_info_maxnum = 0x7f090043;
private integer() {
}
}
public static final class layout {
public static final int custom_dialog = 0x7f0b001d;
public static final int notification_action = 0x7f0b0060;
public static final int notification_action_tombstone = 0x7f0b0061;
public static final int notification_template_custom_big = 0x7f0b0062;
public static final int notification_template_icon_group = 0x7f0b0063;
public static final int notification_template_part_chronometer = 0x7f0b0064;
public static final int notification_template_part_time = 0x7f0b0065;
private layout() {
}
}
public static final class string {
public static final int status_bar_notification_info_overflow = 0x7f0f00a8;
private string() {
}
}
public static final class style {
public static final int TextAppearance_Compat_Notification = 0x7f1001c3;
public static final int TextAppearance_Compat_Notification_Info = 0x7f1001c4;
public static final int TextAppearance_Compat_Notification_Line2 = 0x7f1001c5;
public static final int TextAppearance_Compat_Notification_Time = 0x7f1001c6;
public static final int TextAppearance_Compat_Notification_Title = 0x7f1001c7;
public static final int Widget_Compat_NotificationActionContainer = 0x7f10032d;
public static final int Widget_Compat_NotificationActionText = 0x7f10032e;
private style() {
}
}
public static final class styleable {
public static final int ColorStateListItem_alpha = 0x00000003;
public static final int ColorStateListItem_android_alpha = 0x00000001;
public static final int ColorStateListItem_android_color = 0x00000000;
public static final int ColorStateListItem_android_lStar = 0x00000002;
public static final int ColorStateListItem_lStar = 0x00000004;
public static final int FontFamilyFont_android_font = 0x00000000;
public static final int FontFamilyFont_android_fontStyle = 0x00000002;
public static final int FontFamilyFont_android_fontVariationSettings = 0x00000004;
public static final int FontFamilyFont_android_fontWeight = 0x00000001;
public static final int FontFamilyFont_android_ttcIndex = 0x00000003;
public static final int FontFamilyFont_font = 0x00000005;
public static final int FontFamilyFont_fontStyle = 0x00000006;
public static final int FontFamilyFont_fontVariationSettings = 0x00000007;
public static final int FontFamilyFont_fontWeight = 0x00000008;
public static final int FontFamilyFont_ttcIndex = 0x00000009;
public static final int FontFamily_fontProviderAuthority = 0x00000000;
public static final int FontFamily_fontProviderCerts = 0x00000001;
public static final int FontFamily_fontProviderFetchStrategy = 0x00000002;
public static final int FontFamily_fontProviderFetchTimeout = 0x00000003;
public static final int FontFamily_fontProviderPackage = 0x00000004;
public static final int FontFamily_fontProviderQuery = 0x00000005;
public static final int FontFamily_fontProviderSystemFontFamily = 0x00000006;
public static final int FragmentContainerView_android_name = 0x00000000;
public static final int FragmentContainerView_android_tag = 0x00000001;
public static final int Fragment_android_id = 0x00000001;
public static final int Fragment_android_name = 0x00000000;
public static final int Fragment_android_tag = 0x00000002;
public static final int GradientColorItem_android_color = 0x00000000;
public static final int GradientColorItem_android_offset = 0x00000001;
public static final int GradientColor_android_centerColor = 0x00000007;
public static final int GradientColor_android_centerX = 0x00000003;
public static final int GradientColor_android_centerY = 0x00000004;
public static final int GradientColor_android_endColor = 0x00000001;
public static final int GradientColor_android_endX = 0x0000000a;
public static final int GradientColor_android_endY = 0x0000000b;
public static final int GradientColor_android_gradientRadius = 0x00000005;
public static final int GradientColor_android_startColor = 0x00000000;
public static final int GradientColor_android_startX = 0x00000008;
public static final int GradientColor_android_startY = 0x00000009;
public static final int GradientColor_android_tileMode = 0x00000006;
public static final int GradientColor_android_type = 0x00000002;
public static final int[] ColorStateListItem = {android.R.attr.color, android.R.attr.alpha, android.R.attr.lStar, ch.mod_p.sre24.e5.R.attr.alpha, ch.mod_p.sre24.e5.R.attr.lStar};
public static final int[] FontFamily = {ch.mod_p.sre24.e5.R.attr.fontProviderAuthority, ch.mod_p.sre24.e5.R.attr.fontProviderCerts, ch.mod_p.sre24.e5.R.attr.fontProviderFetchStrategy, ch.mod_p.sre24.e5.R.attr.fontProviderFetchTimeout, ch.mod_p.sre24.e5.R.attr.fontProviderPackage, ch.mod_p.sre24.e5.R.attr.fontProviderQuery, ch.mod_p.sre24.e5.R.attr.fontProviderSystemFontFamily};
public static final int[] FontFamilyFont = {android.R.attr.font, android.R.attr.fontWeight, android.R.attr.fontStyle, android.R.attr.ttcIndex, android.R.attr.fontVariationSettings, ch.mod_p.sre24.e5.R.attr.font, ch.mod_p.sre24.e5.R.attr.fontStyle, ch.mod_p.sre24.e5.R.attr.fontVariationSettings, ch.mod_p.sre24.e5.R.attr.fontWeight, ch.mod_p.sre24.e5.R.attr.ttcIndex};
public static final int[] Fragment = {android.R.attr.name, android.R.attr.id, android.R.attr.tag};
public static final int[] FragmentContainerView = {android.R.attr.name, android.R.attr.tag};
public static final int[] GradientColor = {android.R.attr.startColor, android.R.attr.endColor, android.R.attr.type, android.R.attr.centerX, android.R.attr.centerY, android.R.attr.gradientRadius, android.R.attr.tileMode, android.R.attr.centerColor, android.R.attr.startX, android.R.attr.startY, android.R.attr.endX, android.R.attr.endY};
public static final int[] GradientColorItem = {android.R.attr.color, android.R.attr.offset};
private styleable() {
}
}
private R() {
}
}

View File

@ -0,0 +1,614 @@
package androidx.fragment.app;
import android.util.Log;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.FragmentManager;
import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.Lifecycle;
import java.io.PrintWriter;
import java.util.ArrayList;
/* loaded from: classes.dex */
final class BackStackRecord extends FragmentTransaction implements FragmentManager.BackStackEntry, FragmentManager.OpGenerator {
private static final String TAG = "FragmentManager";
boolean mCommitted;
int mIndex;
final FragmentManager mManager;
@Override // androidx.fragment.app.FragmentManager.BackStackEntry
public int getId() {
return this.mIndex;
}
public String toString() {
StringBuilder sb = new StringBuilder(128);
sb.append("BackStackEntry{");
sb.append(Integer.toHexString(System.identityHashCode(this)));
if (this.mIndex >= 0) {
sb.append(" #");
sb.append(this.mIndex);
}
if (this.mName != null) {
sb.append(" ");
sb.append(this.mName);
}
sb.append("}");
return sb.toString();
}
public void dump(String str, PrintWriter printWriter) {
dump(str, printWriter, true);
}
public void dump(String str, PrintWriter printWriter, boolean z) {
String str2;
if (z) {
printWriter.print(str);
printWriter.print("mName=");
printWriter.print(this.mName);
printWriter.print(" mIndex=");
printWriter.print(this.mIndex);
printWriter.print(" mCommitted=");
printWriter.println(this.mCommitted);
if (this.mTransition != 0) {
printWriter.print(str);
printWriter.print("mTransition=#");
printWriter.print(Integer.toHexString(this.mTransition));
}
if (this.mEnterAnim != 0 || this.mExitAnim != 0) {
printWriter.print(str);
printWriter.print("mEnterAnim=#");
printWriter.print(Integer.toHexString(this.mEnterAnim));
printWriter.print(" mExitAnim=#");
printWriter.println(Integer.toHexString(this.mExitAnim));
}
if (this.mPopEnterAnim != 0 || this.mPopExitAnim != 0) {
printWriter.print(str);
printWriter.print("mPopEnterAnim=#");
printWriter.print(Integer.toHexString(this.mPopEnterAnim));
printWriter.print(" mPopExitAnim=#");
printWriter.println(Integer.toHexString(this.mPopExitAnim));
}
if (this.mBreadCrumbTitleRes != 0 || this.mBreadCrumbTitleText != null) {
printWriter.print(str);
printWriter.print("mBreadCrumbTitleRes=#");
printWriter.print(Integer.toHexString(this.mBreadCrumbTitleRes));
printWriter.print(" mBreadCrumbTitleText=");
printWriter.println(this.mBreadCrumbTitleText);
}
if (this.mBreadCrumbShortTitleRes != 0 || this.mBreadCrumbShortTitleText != null) {
printWriter.print(str);
printWriter.print("mBreadCrumbShortTitleRes=#");
printWriter.print(Integer.toHexString(this.mBreadCrumbShortTitleRes));
printWriter.print(" mBreadCrumbShortTitleText=");
printWriter.println(this.mBreadCrumbShortTitleText);
}
}
if (this.mOps.isEmpty()) {
return;
}
printWriter.print(str);
printWriter.println("Operations:");
int size = this.mOps.size();
for (int i = 0; i < size; i++) {
FragmentTransaction.Op op = this.mOps.get(i);
switch (op.mCmd) {
case 0:
str2 = "NULL";
break;
case 1:
str2 = "ADD";
break;
case 2:
str2 = "REPLACE";
break;
case 3:
str2 = "REMOVE";
break;
case 4:
str2 = "HIDE";
break;
case 5:
str2 = "SHOW";
break;
case 6:
str2 = "DETACH";
break;
case 7:
str2 = "ATTACH";
break;
case 8:
str2 = "SET_PRIMARY_NAV";
break;
case 9:
str2 = "UNSET_PRIMARY_NAV";
break;
case 10:
str2 = "OP_SET_MAX_LIFECYCLE";
break;
default:
str2 = "cmd=" + op.mCmd;
break;
}
printWriter.print(str);
printWriter.print(" Op #");
printWriter.print(i);
printWriter.print(": ");
printWriter.print(str2);
printWriter.print(" ");
printWriter.println(op.mFragment);
if (z) {
if (op.mEnterAnim != 0 || op.mExitAnim != 0) {
printWriter.print(str);
printWriter.print("enterAnim=#");
printWriter.print(Integer.toHexString(op.mEnterAnim));
printWriter.print(" exitAnim=#");
printWriter.println(Integer.toHexString(op.mExitAnim));
}
if (op.mPopEnterAnim != 0 || op.mPopExitAnim != 0) {
printWriter.print(str);
printWriter.print("popEnterAnim=#");
printWriter.print(Integer.toHexString(op.mPopEnterAnim));
printWriter.print(" popExitAnim=#");
printWriter.println(Integer.toHexString(op.mPopExitAnim));
}
}
}
}
BackStackRecord(FragmentManager fragmentManager) {
super(fragmentManager.getFragmentFactory(), fragmentManager.getHost() != null ? fragmentManager.getHost().getContext().getClassLoader() : null);
this.mIndex = -1;
this.mManager = fragmentManager;
}
@Override // androidx.fragment.app.FragmentManager.BackStackEntry
public int getBreadCrumbTitleRes() {
return this.mBreadCrumbTitleRes;
}
@Override // androidx.fragment.app.FragmentManager.BackStackEntry
public int getBreadCrumbShortTitleRes() {
return this.mBreadCrumbShortTitleRes;
}
@Override // androidx.fragment.app.FragmentManager.BackStackEntry
public CharSequence getBreadCrumbTitle() {
if (this.mBreadCrumbTitleRes != 0) {
return this.mManager.getHost().getContext().getText(this.mBreadCrumbTitleRes);
}
return this.mBreadCrumbTitleText;
}
@Override // androidx.fragment.app.FragmentManager.BackStackEntry
public CharSequence getBreadCrumbShortTitle() {
if (this.mBreadCrumbShortTitleRes != 0) {
return this.mManager.getHost().getContext().getText(this.mBreadCrumbShortTitleRes);
}
return this.mBreadCrumbShortTitleText;
}
@Override // androidx.fragment.app.FragmentTransaction
void doAddOp(int i, Fragment fragment, String str, int i2) {
super.doAddOp(i, fragment, str, i2);
fragment.mFragmentManager = this.mManager;
}
@Override // androidx.fragment.app.FragmentTransaction
public FragmentTransaction remove(Fragment fragment) {
if (fragment.mFragmentManager != null && fragment.mFragmentManager != this.mManager) {
throw new IllegalStateException("Cannot remove Fragment attached to a different FragmentManager. Fragment " + fragment.toString() + " is already attached to a FragmentManager.");
}
return super.remove(fragment);
}
@Override // androidx.fragment.app.FragmentTransaction
public FragmentTransaction hide(Fragment fragment) {
if (fragment.mFragmentManager != null && fragment.mFragmentManager != this.mManager) {
throw new IllegalStateException("Cannot hide Fragment attached to a different FragmentManager. Fragment " + fragment.toString() + " is already attached to a FragmentManager.");
}
return super.hide(fragment);
}
@Override // androidx.fragment.app.FragmentTransaction
public FragmentTransaction show(Fragment fragment) {
if (fragment.mFragmentManager != null && fragment.mFragmentManager != this.mManager) {
throw new IllegalStateException("Cannot show Fragment attached to a different FragmentManager. Fragment " + fragment.toString() + " is already attached to a FragmentManager.");
}
return super.show(fragment);
}
@Override // androidx.fragment.app.FragmentTransaction
public FragmentTransaction detach(Fragment fragment) {
if (fragment.mFragmentManager != null && fragment.mFragmentManager != this.mManager) {
throw new IllegalStateException("Cannot detach Fragment attached to a different FragmentManager. Fragment " + fragment.toString() + " is already attached to a FragmentManager.");
}
return super.detach(fragment);
}
@Override // androidx.fragment.app.FragmentTransaction
public FragmentTransaction setPrimaryNavigationFragment(Fragment fragment) {
if (fragment != null && fragment.mFragmentManager != null && fragment.mFragmentManager != this.mManager) {
throw new IllegalStateException("Cannot setPrimaryNavigation for Fragment attached to a different FragmentManager. Fragment " + fragment.toString() + " is already attached to a FragmentManager.");
}
return super.setPrimaryNavigationFragment(fragment);
}
@Override // androidx.fragment.app.FragmentTransaction
public FragmentTransaction setMaxLifecycle(Fragment fragment, Lifecycle.State state) {
if (fragment.mFragmentManager != this.mManager) {
throw new IllegalArgumentException("Cannot setMaxLifecycle for Fragment not attached to FragmentManager " + this.mManager);
}
if (state == Lifecycle.State.INITIALIZED && fragment.mState > -1) {
throw new IllegalArgumentException("Cannot set maximum Lifecycle to " + state + " after the Fragment has been created");
}
if (state == Lifecycle.State.DESTROYED) {
throw new IllegalArgumentException("Cannot set maximum Lifecycle to " + state + ". Use remove() to remove the fragment from the FragmentManager and trigger its destruction.");
}
return super.setMaxLifecycle(fragment, state);
}
void bumpBackStackNesting(int i) {
if (this.mAddToBackStack) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Bump nesting in " + this + " by " + i);
}
int size = this.mOps.size();
for (int i2 = 0; i2 < size; i2++) {
FragmentTransaction.Op op = this.mOps.get(i2);
if (op.mFragment != null) {
op.mFragment.mBackStackNesting += i;
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Bump nesting of " + op.mFragment + " to " + op.mFragment.mBackStackNesting);
}
}
}
}
}
public void runOnCommitRunnables() {
if (this.mCommitRunnables != null) {
for (int i = 0; i < this.mCommitRunnables.size(); i++) {
this.mCommitRunnables.get(i).run();
}
this.mCommitRunnables = null;
}
}
@Override // androidx.fragment.app.FragmentTransaction
public int commit() {
return commitInternal(false);
}
@Override // androidx.fragment.app.FragmentTransaction
public int commitAllowingStateLoss() {
return commitInternal(true);
}
@Override // androidx.fragment.app.FragmentTransaction
public void commitNow() {
disallowAddToBackStack();
this.mManager.execSingleAction(this, false);
}
@Override // androidx.fragment.app.FragmentTransaction
public void commitNowAllowingStateLoss() {
disallowAddToBackStack();
this.mManager.execSingleAction(this, true);
}
int commitInternal(boolean z) {
if (this.mCommitted) {
throw new IllegalStateException("commit already called");
}
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Commit: " + this);
PrintWriter printWriter = new PrintWriter(new LogWriter(TAG));
dump(" ", printWriter);
printWriter.close();
}
this.mCommitted = true;
if (this.mAddToBackStack) {
this.mIndex = this.mManager.allocBackStackIndex();
} else {
this.mIndex = -1;
}
this.mManager.enqueueAction(this, z);
return this.mIndex;
}
@Override // androidx.fragment.app.FragmentManager.OpGenerator
public boolean generateOps(ArrayList<BackStackRecord> arrayList, ArrayList<Boolean> arrayList2) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Run: " + this);
}
arrayList.add(this);
arrayList2.add(false);
if (!this.mAddToBackStack) {
return true;
}
this.mManager.addBackStackState(this);
return true;
}
boolean interactsWith(int i) {
int size = this.mOps.size();
for (int i2 = 0; i2 < size; i2++) {
FragmentTransaction.Op op = this.mOps.get(i2);
int i3 = op.mFragment != null ? op.mFragment.mContainerId : 0;
if (i3 != 0 && i3 == i) {
return true;
}
}
return false;
}
boolean interactsWith(ArrayList<BackStackRecord> arrayList, int i, int i2) {
if (i2 == i) {
return false;
}
int size = this.mOps.size();
int i3 = -1;
for (int i4 = 0; i4 < size; i4++) {
FragmentTransaction.Op op = this.mOps.get(i4);
int i5 = op.mFragment != null ? op.mFragment.mContainerId : 0;
if (i5 != 0 && i5 != i3) {
for (int i6 = i; i6 < i2; i6++) {
BackStackRecord backStackRecord = arrayList.get(i6);
int size2 = backStackRecord.mOps.size();
for (int i7 = 0; i7 < size2; i7++) {
FragmentTransaction.Op op2 = backStackRecord.mOps.get(i7);
if ((op2.mFragment != null ? op2.mFragment.mContainerId : 0) == i5) {
return true;
}
}
}
i3 = i5;
}
}
return false;
}
void executeOps() {
int size = this.mOps.size();
for (int i = 0; i < size; i++) {
FragmentTransaction.Op op = this.mOps.get(i);
Fragment fragment = op.mFragment;
if (fragment != null) {
fragment.setPopDirection(false);
fragment.setNextTransition(this.mTransition);
fragment.setSharedElementNames(this.mSharedElementSourceNames, this.mSharedElementTargetNames);
}
switch (op.mCmd) {
case 1:
fragment.setAnimations(op.mEnterAnim, op.mExitAnim, op.mPopEnterAnim, op.mPopExitAnim);
this.mManager.setExitAnimationOrder(fragment, false);
this.mManager.addFragment(fragment);
break;
case 2:
default:
throw new IllegalArgumentException("Unknown cmd: " + op.mCmd);
case 3:
fragment.setAnimations(op.mEnterAnim, op.mExitAnim, op.mPopEnterAnim, op.mPopExitAnim);
this.mManager.removeFragment(fragment);
break;
case 4:
fragment.setAnimations(op.mEnterAnim, op.mExitAnim, op.mPopEnterAnim, op.mPopExitAnim);
this.mManager.hideFragment(fragment);
break;
case 5:
fragment.setAnimations(op.mEnterAnim, op.mExitAnim, op.mPopEnterAnim, op.mPopExitAnim);
this.mManager.setExitAnimationOrder(fragment, false);
this.mManager.showFragment(fragment);
break;
case 6:
fragment.setAnimations(op.mEnterAnim, op.mExitAnim, op.mPopEnterAnim, op.mPopExitAnim);
this.mManager.detachFragment(fragment);
break;
case 7:
fragment.setAnimations(op.mEnterAnim, op.mExitAnim, op.mPopEnterAnim, op.mPopExitAnim);
this.mManager.setExitAnimationOrder(fragment, false);
this.mManager.attachFragment(fragment);
break;
case 8:
this.mManager.setPrimaryNavigationFragment(fragment);
break;
case 9:
this.mManager.setPrimaryNavigationFragment(null);
break;
case 10:
this.mManager.setMaxLifecycle(fragment, op.mCurrentMaxState);
break;
}
if (!this.mReorderingAllowed && op.mCmd != 1 && fragment != null && !FragmentManager.USE_STATE_MANAGER) {
this.mManager.moveFragmentToExpectedState(fragment);
}
}
if (this.mReorderingAllowed || FragmentManager.USE_STATE_MANAGER) {
return;
}
FragmentManager fragmentManager = this.mManager;
fragmentManager.moveToState(fragmentManager.mCurState, true);
}
void executePopOps(boolean z) {
for (int size = this.mOps.size() - 1; size >= 0; size--) {
FragmentTransaction.Op op = this.mOps.get(size);
Fragment fragment = op.mFragment;
if (fragment != null) {
fragment.setPopDirection(true);
fragment.setNextTransition(FragmentManager.reverseTransit(this.mTransition));
fragment.setSharedElementNames(this.mSharedElementTargetNames, this.mSharedElementSourceNames);
}
switch (op.mCmd) {
case 1:
fragment.setAnimations(op.mEnterAnim, op.mExitAnim, op.mPopEnterAnim, op.mPopExitAnim);
this.mManager.setExitAnimationOrder(fragment, true);
this.mManager.removeFragment(fragment);
break;
case 2:
default:
throw new IllegalArgumentException("Unknown cmd: " + op.mCmd);
case 3:
fragment.setAnimations(op.mEnterAnim, op.mExitAnim, op.mPopEnterAnim, op.mPopExitAnim);
this.mManager.addFragment(fragment);
break;
case 4:
fragment.setAnimations(op.mEnterAnim, op.mExitAnim, op.mPopEnterAnim, op.mPopExitAnim);
this.mManager.showFragment(fragment);
break;
case 5:
fragment.setAnimations(op.mEnterAnim, op.mExitAnim, op.mPopEnterAnim, op.mPopExitAnim);
this.mManager.setExitAnimationOrder(fragment, true);
this.mManager.hideFragment(fragment);
break;
case 6:
fragment.setAnimations(op.mEnterAnim, op.mExitAnim, op.mPopEnterAnim, op.mPopExitAnim);
this.mManager.attachFragment(fragment);
break;
case 7:
fragment.setAnimations(op.mEnterAnim, op.mExitAnim, op.mPopEnterAnim, op.mPopExitAnim);
this.mManager.setExitAnimationOrder(fragment, true);
this.mManager.detachFragment(fragment);
break;
case 8:
this.mManager.setPrimaryNavigationFragment(null);
break;
case 9:
this.mManager.setPrimaryNavigationFragment(fragment);
break;
case 10:
this.mManager.setMaxLifecycle(fragment, op.mOldMaxState);
break;
}
if (!this.mReorderingAllowed && op.mCmd != 3 && fragment != null && !FragmentManager.USE_STATE_MANAGER) {
this.mManager.moveFragmentToExpectedState(fragment);
}
}
if (this.mReorderingAllowed || !z || FragmentManager.USE_STATE_MANAGER) {
return;
}
FragmentManager fragmentManager = this.mManager;
fragmentManager.moveToState(fragmentManager.mCurState, true);
}
Fragment expandOps(ArrayList<Fragment> arrayList, Fragment fragment) {
Fragment fragment2 = fragment;
int i = 0;
while (i < this.mOps.size()) {
FragmentTransaction.Op op = this.mOps.get(i);
int i2 = op.mCmd;
if (i2 != 1) {
if (i2 == 2) {
Fragment fragment3 = op.mFragment;
int i3 = fragment3.mContainerId;
boolean z = false;
for (int size = arrayList.size() - 1; size >= 0; size--) {
Fragment fragment4 = arrayList.get(size);
if (fragment4.mContainerId == i3) {
if (fragment4 == fragment3) {
z = true;
} else {
if (fragment4 == fragment2) {
this.mOps.add(i, new FragmentTransaction.Op(9, fragment4));
i++;
fragment2 = null;
}
FragmentTransaction.Op op2 = new FragmentTransaction.Op(3, fragment4);
op2.mEnterAnim = op.mEnterAnim;
op2.mPopEnterAnim = op.mPopEnterAnim;
op2.mExitAnim = op.mExitAnim;
op2.mPopExitAnim = op.mPopExitAnim;
this.mOps.add(i, op2);
arrayList.remove(fragment4);
i++;
}
}
}
if (z) {
this.mOps.remove(i);
i--;
} else {
op.mCmd = 1;
arrayList.add(fragment3);
}
} else if (i2 == 3 || i2 == 6) {
arrayList.remove(op.mFragment);
if (op.mFragment == fragment2) {
this.mOps.add(i, new FragmentTransaction.Op(9, op.mFragment));
i++;
fragment2 = null;
}
} else if (i2 != 7) {
if (i2 == 8) {
this.mOps.add(i, new FragmentTransaction.Op(9, fragment2));
i++;
fragment2 = op.mFragment;
}
}
i++;
}
arrayList.add(op.mFragment);
i++;
}
return fragment2;
}
Fragment trackAddedFragmentsInPop(ArrayList<Fragment> arrayList, Fragment fragment) {
for (int size = this.mOps.size() - 1; size >= 0; size--) {
FragmentTransaction.Op op = this.mOps.get(size);
int i = op.mCmd;
if (i != 1) {
if (i != 3) {
switch (i) {
case 8:
fragment = null;
break;
case 9:
fragment = op.mFragment;
break;
case 10:
op.mCurrentMaxState = op.mOldMaxState;
break;
}
}
arrayList.add(op.mFragment);
}
arrayList.remove(op.mFragment);
}
return fragment;
}
boolean isPostponed() {
for (int i = 0; i < this.mOps.size(); i++) {
if (isFragmentPostponed(this.mOps.get(i))) {
return true;
}
}
return false;
}
void setOnStartPostponedListener(Fragment.OnStartEnterTransitionListener onStartEnterTransitionListener) {
for (int i = 0; i < this.mOps.size(); i++) {
FragmentTransaction.Op op = this.mOps.get(i);
if (isFragmentPostponed(op)) {
op.mFragment.setOnStartEnterTransitionListener(onStartEnterTransitionListener);
}
}
}
private static boolean isFragmentPostponed(FragmentTransaction.Op op) {
Fragment fragment = op.mFragment;
return (fragment == null || !fragment.mAdded || fragment.mView == null || fragment.mDetached || fragment.mHidden || !fragment.isPostponed()) ? false : true;
}
@Override // androidx.fragment.app.FragmentManager.BackStackEntry
public String getName() {
return this.mName;
}
@Override // androidx.fragment.app.FragmentTransaction
public boolean isEmpty() {
return this.mOps.isEmpty();
}
}

View File

@ -0,0 +1,164 @@
package androidx.fragment.app;
import android.os.Parcel;
import android.os.Parcelable;
import android.text.TextUtils;
import android.util.Log;
import androidx.fragment.app.FragmentTransaction;
import androidx.lifecycle.Lifecycle;
import java.util.ArrayList;
/* loaded from: classes.dex */
final class BackStackState implements Parcelable {
public static final Parcelable.Creator<BackStackState> CREATOR = new Parcelable.Creator<BackStackState>() { // from class: androidx.fragment.app.BackStackState.1
/* JADX WARN: Can't rename method to resolve collision */
@Override // android.os.Parcelable.Creator
public BackStackState createFromParcel(Parcel parcel) {
return new BackStackState(parcel);
}
/* JADX WARN: Can't rename method to resolve collision */
@Override // android.os.Parcelable.Creator
public BackStackState[] newArray(int i) {
return new BackStackState[i];
}
};
private static final String TAG = "FragmentManager";
final int mBreadCrumbShortTitleRes;
final CharSequence mBreadCrumbShortTitleText;
final int mBreadCrumbTitleRes;
final CharSequence mBreadCrumbTitleText;
final int[] mCurrentMaxLifecycleStates;
final ArrayList<String> mFragmentWhos;
final int mIndex;
final String mName;
final int[] mOldMaxLifecycleStates;
final int[] mOps;
final boolean mReorderingAllowed;
final ArrayList<String> mSharedElementSourceNames;
final ArrayList<String> mSharedElementTargetNames;
final int mTransition;
@Override // android.os.Parcelable
public int describeContents() {
return 0;
}
public BackStackState(BackStackRecord backStackRecord) {
int size = backStackRecord.mOps.size();
this.mOps = new int[size * 5];
if (!backStackRecord.mAddToBackStack) {
throw new IllegalStateException("Not on back stack");
}
this.mFragmentWhos = new ArrayList<>(size);
this.mOldMaxLifecycleStates = new int[size];
this.mCurrentMaxLifecycleStates = new int[size];
int i = 0;
for (int i2 = 0; i2 < size; i2++) {
FragmentTransaction.Op op = backStackRecord.mOps.get(i2);
int i3 = i + 1;
this.mOps[i] = op.mCmd;
this.mFragmentWhos.add(op.mFragment != null ? op.mFragment.mWho : null);
this.mOps[i3] = op.mEnterAnim;
this.mOps[i + 2] = op.mExitAnim;
int i4 = i + 4;
this.mOps[i + 3] = op.mPopEnterAnim;
i += 5;
this.mOps[i4] = op.mPopExitAnim;
this.mOldMaxLifecycleStates[i2] = op.mOldMaxState.ordinal();
this.mCurrentMaxLifecycleStates[i2] = op.mCurrentMaxState.ordinal();
}
this.mTransition = backStackRecord.mTransition;
this.mName = backStackRecord.mName;
this.mIndex = backStackRecord.mIndex;
this.mBreadCrumbTitleRes = backStackRecord.mBreadCrumbTitleRes;
this.mBreadCrumbTitleText = backStackRecord.mBreadCrumbTitleText;
this.mBreadCrumbShortTitleRes = backStackRecord.mBreadCrumbShortTitleRes;
this.mBreadCrumbShortTitleText = backStackRecord.mBreadCrumbShortTitleText;
this.mSharedElementSourceNames = backStackRecord.mSharedElementSourceNames;
this.mSharedElementTargetNames = backStackRecord.mSharedElementTargetNames;
this.mReorderingAllowed = backStackRecord.mReorderingAllowed;
}
public BackStackState(Parcel parcel) {
this.mOps = parcel.createIntArray();
this.mFragmentWhos = parcel.createStringArrayList();
this.mOldMaxLifecycleStates = parcel.createIntArray();
this.mCurrentMaxLifecycleStates = parcel.createIntArray();
this.mTransition = parcel.readInt();
this.mName = parcel.readString();
this.mIndex = parcel.readInt();
this.mBreadCrumbTitleRes = parcel.readInt();
this.mBreadCrumbTitleText = (CharSequence) TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel);
this.mBreadCrumbShortTitleRes = parcel.readInt();
this.mBreadCrumbShortTitleText = (CharSequence) TextUtils.CHAR_SEQUENCE_CREATOR.createFromParcel(parcel);
this.mSharedElementSourceNames = parcel.createStringArrayList();
this.mSharedElementTargetNames = parcel.createStringArrayList();
this.mReorderingAllowed = parcel.readInt() != 0;
}
public BackStackRecord instantiate(FragmentManager fragmentManager) {
BackStackRecord backStackRecord = new BackStackRecord(fragmentManager);
int i = 0;
int i2 = 0;
while (i < this.mOps.length) {
FragmentTransaction.Op op = new FragmentTransaction.Op();
int i3 = i + 1;
op.mCmd = this.mOps[i];
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Instantiate " + backStackRecord + " op #" + i2 + " base fragment #" + this.mOps[i3]);
}
String str = this.mFragmentWhos.get(i2);
if (str != null) {
op.mFragment = fragmentManager.findActiveFragment(str);
} else {
op.mFragment = null;
}
op.mOldMaxState = Lifecycle.State.values()[this.mOldMaxLifecycleStates[i2]];
op.mCurrentMaxState = Lifecycle.State.values()[this.mCurrentMaxLifecycleStates[i2]];
op.mEnterAnim = this.mOps[i3];
op.mExitAnim = this.mOps[i + 2];
int i4 = i + 4;
op.mPopEnterAnim = this.mOps[i + 3];
i += 5;
op.mPopExitAnim = this.mOps[i4];
backStackRecord.mEnterAnim = op.mEnterAnim;
backStackRecord.mExitAnim = op.mExitAnim;
backStackRecord.mPopEnterAnim = op.mPopEnterAnim;
backStackRecord.mPopExitAnim = op.mPopExitAnim;
backStackRecord.addOp(op);
i2++;
}
backStackRecord.mTransition = this.mTransition;
backStackRecord.mName = this.mName;
backStackRecord.mIndex = this.mIndex;
backStackRecord.mAddToBackStack = true;
backStackRecord.mBreadCrumbTitleRes = this.mBreadCrumbTitleRes;
backStackRecord.mBreadCrumbTitleText = this.mBreadCrumbTitleText;
backStackRecord.mBreadCrumbShortTitleRes = this.mBreadCrumbShortTitleRes;
backStackRecord.mBreadCrumbShortTitleText = this.mBreadCrumbShortTitleText;
backStackRecord.mSharedElementSourceNames = this.mSharedElementSourceNames;
backStackRecord.mSharedElementTargetNames = this.mSharedElementTargetNames;
backStackRecord.mReorderingAllowed = this.mReorderingAllowed;
backStackRecord.bumpBackStackNesting(1);
return backStackRecord;
}
@Override // android.os.Parcelable
public void writeToParcel(Parcel parcel, int i) {
parcel.writeIntArray(this.mOps);
parcel.writeStringList(this.mFragmentWhos);
parcel.writeIntArray(this.mOldMaxLifecycleStates);
parcel.writeIntArray(this.mCurrentMaxLifecycleStates);
parcel.writeInt(this.mTransition);
parcel.writeString(this.mName);
parcel.writeInt(this.mIndex);
parcel.writeInt(this.mBreadCrumbTitleRes);
TextUtils.writeToParcel(this.mBreadCrumbTitleText, parcel, 0);
parcel.writeInt(this.mBreadCrumbShortTitleRes);
TextUtils.writeToParcel(this.mBreadCrumbShortTitleText, parcel, 0);
parcel.writeStringList(this.mSharedElementSourceNames);
parcel.writeStringList(this.mSharedElementTargetNames);
parcel.writeInt(this.mReorderingAllowed ? 1 : 0);
}
}

View File

@ -0,0 +1,824 @@
package androidx.fragment.app;
import android.animation.Animator;
import android.animation.AnimatorListenerAdapter;
import android.content.Context;
import android.graphics.Rect;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import androidx.collection.ArrayMap;
import androidx.core.app.SharedElementCallback;
import androidx.core.os.CancellationSignal;
import androidx.core.util.Preconditions;
import androidx.core.view.OneShotPreDrawListener;
import androidx.core.view.ViewCompat;
import androidx.core.view.ViewGroupCompat;
import androidx.fragment.app.FragmentAnim;
import androidx.fragment.app.SpecialEffectsController;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
import java.util.Map;
/* loaded from: classes.dex */
class DefaultSpecialEffectsController extends SpecialEffectsController {
DefaultSpecialEffectsController(ViewGroup viewGroup) {
super(viewGroup);
}
@Override // androidx.fragment.app.SpecialEffectsController
void executeOperations(List<SpecialEffectsController.Operation> list, boolean z) {
SpecialEffectsController.Operation operation = null;
SpecialEffectsController.Operation operation2 = null;
for (SpecialEffectsController.Operation operation3 : list) {
SpecialEffectsController.Operation.State from = SpecialEffectsController.Operation.State.from(operation3.getFragment().mView);
int i = AnonymousClass10.$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State[operation3.getFinalState().ordinal()];
if (i == 1 || i == 2 || i == 3) {
if (from == SpecialEffectsController.Operation.State.VISIBLE && operation == null) {
operation = operation3;
}
} else if (i == 4 && from != SpecialEffectsController.Operation.State.VISIBLE) {
operation2 = operation3;
}
}
ArrayList arrayList = new ArrayList();
ArrayList arrayList2 = new ArrayList();
final ArrayList arrayList3 = new ArrayList(list);
for (final SpecialEffectsController.Operation operation4 : list) {
CancellationSignal cancellationSignal = new CancellationSignal();
operation4.markStartedSpecialEffect(cancellationSignal);
arrayList.add(new AnimationInfo(operation4, cancellationSignal, z));
CancellationSignal cancellationSignal2 = new CancellationSignal();
operation4.markStartedSpecialEffect(cancellationSignal2);
boolean z2 = false;
if (z) {
if (operation4 != operation) {
arrayList2.add(new TransitionInfo(operation4, cancellationSignal2, z, z2));
operation4.addCompletionListener(new Runnable() { // from class: androidx.fragment.app.DefaultSpecialEffectsController.1
@Override // java.lang.Runnable
public void run() {
if (arrayList3.contains(operation4)) {
arrayList3.remove(operation4);
DefaultSpecialEffectsController.this.applyContainerChanges(operation4);
}
}
});
}
z2 = true;
arrayList2.add(new TransitionInfo(operation4, cancellationSignal2, z, z2));
operation4.addCompletionListener(new Runnable() { // from class: androidx.fragment.app.DefaultSpecialEffectsController.1
@Override // java.lang.Runnable
public void run() {
if (arrayList3.contains(operation4)) {
arrayList3.remove(operation4);
DefaultSpecialEffectsController.this.applyContainerChanges(operation4);
}
}
});
} else {
if (operation4 != operation2) {
arrayList2.add(new TransitionInfo(operation4, cancellationSignal2, z, z2));
operation4.addCompletionListener(new Runnable() { // from class: androidx.fragment.app.DefaultSpecialEffectsController.1
@Override // java.lang.Runnable
public void run() {
if (arrayList3.contains(operation4)) {
arrayList3.remove(operation4);
DefaultSpecialEffectsController.this.applyContainerChanges(operation4);
}
}
});
}
z2 = true;
arrayList2.add(new TransitionInfo(operation4, cancellationSignal2, z, z2));
operation4.addCompletionListener(new Runnable() { // from class: androidx.fragment.app.DefaultSpecialEffectsController.1
@Override // java.lang.Runnable
public void run() {
if (arrayList3.contains(operation4)) {
arrayList3.remove(operation4);
DefaultSpecialEffectsController.this.applyContainerChanges(operation4);
}
}
});
}
}
Map<SpecialEffectsController.Operation, Boolean> startTransitions = startTransitions(arrayList2, arrayList3, z, operation, operation2);
startAnimations(arrayList, arrayList3, startTransitions.containsValue(true), startTransitions);
Iterator<SpecialEffectsController.Operation> it = arrayList3.iterator();
while (it.hasNext()) {
applyContainerChanges(it.next());
}
arrayList3.clear();
}
/* renamed from: androidx.fragment.app.DefaultSpecialEffectsController$10, reason: invalid class name */
static /* synthetic */ class AnonymousClass10 {
static final /* synthetic */ int[] $SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State;
static {
int[] iArr = new int[SpecialEffectsController.Operation.State.values().length];
$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State = iArr;
try {
iArr[SpecialEffectsController.Operation.State.GONE.ordinal()] = 1;
} catch (NoSuchFieldError unused) {
}
try {
$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State[SpecialEffectsController.Operation.State.INVISIBLE.ordinal()] = 2;
} catch (NoSuchFieldError unused2) {
}
try {
$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State[SpecialEffectsController.Operation.State.REMOVED.ordinal()] = 3;
} catch (NoSuchFieldError unused3) {
}
try {
$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State[SpecialEffectsController.Operation.State.VISIBLE.ordinal()] = 4;
} catch (NoSuchFieldError unused4) {
}
}
}
private void startAnimations(List<AnimationInfo> list, List<SpecialEffectsController.Operation> list2, boolean z, Map<SpecialEffectsController.Operation, Boolean> map) {
final ViewGroup container = getContainer();
Context context = container.getContext();
ArrayList arrayList = new ArrayList();
boolean z2 = false;
for (final AnimationInfo animationInfo : list) {
if (animationInfo.isVisibilityUnchanged()) {
animationInfo.completeSpecialEffect();
} else {
FragmentAnim.AnimationOrAnimator animation = animationInfo.getAnimation(context);
if (animation == null) {
animationInfo.completeSpecialEffect();
} else {
final Animator animator = animation.animator;
if (animator == null) {
arrayList.add(animationInfo);
} else {
final SpecialEffectsController.Operation operation = animationInfo.getOperation();
Fragment fragment = operation.getFragment();
if (Boolean.TRUE.equals(map.get(operation))) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "Ignoring Animator set on " + fragment + " as this Fragment was involved in a Transition.");
}
animationInfo.completeSpecialEffect();
} else {
final boolean z3 = operation.getFinalState() == SpecialEffectsController.Operation.State.GONE;
if (z3) {
list2.remove(operation);
}
final View view = fragment.mView;
container.startViewTransition(view);
animator.addListener(new AnimatorListenerAdapter() { // from class: androidx.fragment.app.DefaultSpecialEffectsController.2
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator2) {
container.endViewTransition(view);
if (z3) {
operation.getFinalState().applyState(view);
}
animationInfo.completeSpecialEffect();
}
});
animator.setTarget(view);
animator.start();
animationInfo.getSignal().setOnCancelListener(new CancellationSignal.OnCancelListener() { // from class: androidx.fragment.app.DefaultSpecialEffectsController.3
@Override // androidx.core.os.CancellationSignal.OnCancelListener
public void onCancel() {
animator.end();
}
});
z2 = true;
}
}
}
}
}
Iterator it = arrayList.iterator();
while (it.hasNext()) {
final AnimationInfo animationInfo2 = (AnimationInfo) it.next();
SpecialEffectsController.Operation operation2 = animationInfo2.getOperation();
Fragment fragment2 = operation2.getFragment();
if (z) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "Ignoring Animation set on " + fragment2 + " as Animations cannot run alongside Transitions.");
}
animationInfo2.completeSpecialEffect();
} else if (z2) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "Ignoring Animation set on " + fragment2 + " as Animations cannot run alongside Animators.");
}
animationInfo2.completeSpecialEffect();
} else {
final View view2 = fragment2.mView;
Animation animation2 = (Animation) Preconditions.checkNotNull(((FragmentAnim.AnimationOrAnimator) Preconditions.checkNotNull(animationInfo2.getAnimation(context))).animation);
if (operation2.getFinalState() != SpecialEffectsController.Operation.State.REMOVED) {
view2.startAnimation(animation2);
animationInfo2.completeSpecialEffect();
} else {
container.startViewTransition(view2);
FragmentAnim.EndViewTransitionAnimation endViewTransitionAnimation = new FragmentAnim.EndViewTransitionAnimation(animation2, container, view2);
endViewTransitionAnimation.setAnimationListener(new Animation.AnimationListener() { // from class: androidx.fragment.app.DefaultSpecialEffectsController.4
@Override // android.view.animation.Animation.AnimationListener
public void onAnimationRepeat(Animation animation3) {
}
@Override // android.view.animation.Animation.AnimationListener
public void onAnimationStart(Animation animation3) {
}
@Override // android.view.animation.Animation.AnimationListener
public void onAnimationEnd(Animation animation3) {
container.post(new Runnable() { // from class: androidx.fragment.app.DefaultSpecialEffectsController.4.1
@Override // java.lang.Runnable
public void run() {
container.endViewTransition(view2);
animationInfo2.completeSpecialEffect();
}
});
}
});
view2.startAnimation(endViewTransitionAnimation);
}
animationInfo2.getSignal().setOnCancelListener(new CancellationSignal.OnCancelListener() { // from class: androidx.fragment.app.DefaultSpecialEffectsController.5
@Override // androidx.core.os.CancellationSignal.OnCancelListener
public void onCancel() {
view2.clearAnimation();
container.endViewTransition(view2);
animationInfo2.completeSpecialEffect();
}
});
}
}
}
private Map<SpecialEffectsController.Operation, Boolean> startTransitions(List<TransitionInfo> list, List<SpecialEffectsController.Operation> list2, final boolean z, final SpecialEffectsController.Operation operation, final SpecialEffectsController.Operation operation2) {
Iterator<TransitionInfo> it;
View view;
Object obj;
ArrayList<View> arrayList;
Object obj2;
ArrayList<View> arrayList2;
HashMap hashMap;
SpecialEffectsController.Operation operation3;
View view2;
Object mergeTransitionsTogether;
ArrayMap arrayMap;
SpecialEffectsController.Operation operation4;
FragmentTransitionImpl fragmentTransitionImpl;
ArrayList<View> arrayList3;
HashMap hashMap2;
Rect rect;
SpecialEffectsController.Operation operation5;
View view3;
ArrayList<View> arrayList4;
DefaultSpecialEffectsController defaultSpecialEffectsController;
SharedElementCallback enterTransitionCallback;
SharedElementCallback exitTransitionCallback;
ArrayList<String> arrayList5;
int i;
View view4;
final View view5;
String findKeyForValue;
ArrayList<String> arrayList6;
DefaultSpecialEffectsController defaultSpecialEffectsController2 = this;
boolean z2 = z;
SpecialEffectsController.Operation operation6 = operation;
SpecialEffectsController.Operation operation7 = operation2;
HashMap hashMap3 = new HashMap();
final FragmentTransitionImpl fragmentTransitionImpl2 = null;
for (TransitionInfo transitionInfo : list) {
if (!transitionInfo.isVisibilityUnchanged()) {
FragmentTransitionImpl handlingImpl = transitionInfo.getHandlingImpl();
if (fragmentTransitionImpl2 == null) {
fragmentTransitionImpl2 = handlingImpl;
} else if (handlingImpl != null && fragmentTransitionImpl2 != handlingImpl) {
throw new IllegalArgumentException("Mixing framework transitions and AndroidX transitions is not allowed. Fragment " + transitionInfo.getOperation().getFragment() + " returned Transition " + transitionInfo.getTransition() + " which uses a different Transition type than other Fragments.");
}
}
}
if (fragmentTransitionImpl2 == null) {
for (TransitionInfo transitionInfo2 : list) {
hashMap3.put(transitionInfo2.getOperation(), false);
transitionInfo2.completeSpecialEffect();
}
return hashMap3;
}
View view6 = new View(getContainer().getContext());
final Rect rect2 = new Rect();
ArrayList<View> arrayList7 = new ArrayList<>();
ArrayList<View> arrayList8 = new ArrayList<>();
ArrayMap arrayMap2 = new ArrayMap();
Object obj3 = null;
View view7 = null;
boolean z3 = false;
for (TransitionInfo transitionInfo3 : list) {
if (!transitionInfo3.hasSharedElementTransition() || operation6 == null || operation7 == null) {
arrayMap = arrayMap2;
operation4 = operation7;
fragmentTransitionImpl = fragmentTransitionImpl2;
arrayList3 = arrayList8;
hashMap2 = hashMap3;
rect = rect2;
operation5 = operation6;
view3 = view6;
DefaultSpecialEffectsController defaultSpecialEffectsController3 = defaultSpecialEffectsController2;
arrayList4 = arrayList7;
defaultSpecialEffectsController = defaultSpecialEffectsController3;
view7 = view7;
} else {
Object wrapTransitionInSet = fragmentTransitionImpl2.wrapTransitionInSet(fragmentTransitionImpl2.cloneTransition(transitionInfo3.getSharedElementTransition()));
ArrayList<String> sharedElementSourceNames = operation2.getFragment().getSharedElementSourceNames();
ArrayList<String> sharedElementSourceNames2 = operation.getFragment().getSharedElementSourceNames();
ArrayList<String> sharedElementTargetNames = operation.getFragment().getSharedElementTargetNames();
View view8 = view7;
int i2 = 0;
while (i2 < sharedElementTargetNames.size()) {
int indexOf = sharedElementSourceNames.indexOf(sharedElementTargetNames.get(i2));
ArrayList<String> arrayList9 = sharedElementTargetNames;
if (indexOf != -1) {
sharedElementSourceNames.set(indexOf, sharedElementSourceNames2.get(i2));
}
i2++;
sharedElementTargetNames = arrayList9;
}
ArrayList<String> sharedElementTargetNames2 = operation2.getFragment().getSharedElementTargetNames();
if (!z2) {
enterTransitionCallback = operation.getFragment().getExitTransitionCallback();
exitTransitionCallback = operation2.getFragment().getEnterTransitionCallback();
} else {
enterTransitionCallback = operation.getFragment().getEnterTransitionCallback();
exitTransitionCallback = operation2.getFragment().getExitTransitionCallback();
}
int i3 = 0;
for (int size = sharedElementSourceNames.size(); i3 < size; size = size) {
arrayMap2.put(sharedElementSourceNames.get(i3), sharedElementTargetNames2.get(i3));
i3++;
}
ArrayMap<String, View> arrayMap3 = new ArrayMap<>();
defaultSpecialEffectsController2.findNamedViews(arrayMap3, operation.getFragment().mView);
arrayMap3.retainAll(sharedElementSourceNames);
if (enterTransitionCallback != null) {
enterTransitionCallback.onMapSharedElements(sharedElementSourceNames, arrayMap3);
int size2 = sharedElementSourceNames.size() - 1;
while (size2 >= 0) {
String str = sharedElementSourceNames.get(size2);
View view9 = arrayMap3.get(str);
if (view9 == null) {
arrayMap2.remove(str);
arrayList6 = sharedElementSourceNames;
} else {
arrayList6 = sharedElementSourceNames;
if (!str.equals(ViewCompat.getTransitionName(view9))) {
arrayMap2.put(ViewCompat.getTransitionName(view9), (String) arrayMap2.remove(str));
}
}
size2--;
sharedElementSourceNames = arrayList6;
}
arrayList5 = sharedElementSourceNames;
} else {
arrayList5 = sharedElementSourceNames;
arrayMap2.retainAll(arrayMap3.keySet());
}
final ArrayMap<String, View> arrayMap4 = new ArrayMap<>();
defaultSpecialEffectsController2.findNamedViews(arrayMap4, operation2.getFragment().mView);
arrayMap4.retainAll(sharedElementTargetNames2);
arrayMap4.retainAll(arrayMap2.values());
if (exitTransitionCallback != null) {
exitTransitionCallback.onMapSharedElements(sharedElementTargetNames2, arrayMap4);
for (int size3 = sharedElementTargetNames2.size() - 1; size3 >= 0; size3--) {
String str2 = sharedElementTargetNames2.get(size3);
View view10 = arrayMap4.get(str2);
if (view10 == null) {
String findKeyForValue2 = FragmentTransition.findKeyForValue(arrayMap2, str2);
if (findKeyForValue2 != null) {
arrayMap2.remove(findKeyForValue2);
}
} else if (!str2.equals(ViewCompat.getTransitionName(view10)) && (findKeyForValue = FragmentTransition.findKeyForValue(arrayMap2, str2)) != null) {
arrayMap2.put(findKeyForValue, ViewCompat.getTransitionName(view10));
}
}
} else {
FragmentTransition.retainValues(arrayMap2, arrayMap4);
}
defaultSpecialEffectsController2.retainMatchingViews(arrayMap3, arrayMap2.keySet());
defaultSpecialEffectsController2.retainMatchingViews(arrayMap4, arrayMap2.values());
if (arrayMap2.isEmpty()) {
arrayList7.clear();
arrayList8.clear();
arrayMap = arrayMap2;
arrayList3 = arrayList8;
rect = rect2;
view3 = view6;
fragmentTransitionImpl = fragmentTransitionImpl2;
view7 = view8;
obj3 = null;
operation4 = operation2;
hashMap2 = hashMap3;
operation5 = operation;
DefaultSpecialEffectsController defaultSpecialEffectsController4 = defaultSpecialEffectsController2;
arrayList4 = arrayList7;
defaultSpecialEffectsController = defaultSpecialEffectsController4;
} else {
FragmentTransition.callSharedElementStartEnd(operation2.getFragment(), operation.getFragment(), z2, arrayMap3, true);
HashMap hashMap4 = hashMap3;
arrayMap = arrayMap2;
View view11 = view6;
ArrayList<View> arrayList10 = arrayList8;
arrayList4 = arrayList7;
OneShotPreDrawListener.add(getContainer(), new Runnable() { // from class: androidx.fragment.app.DefaultSpecialEffectsController.6
@Override // java.lang.Runnable
public void run() {
FragmentTransition.callSharedElementStartEnd(operation2.getFragment(), operation.getFragment(), z, arrayMap4, false);
}
});
arrayList4.addAll(arrayMap3.values());
if (arrayList5.isEmpty()) {
i = 0;
view7 = view8;
} else {
i = 0;
View view12 = arrayMap3.get(arrayList5.get(0));
fragmentTransitionImpl2.setEpicenter(wrapTransitionInSet, view12);
view7 = view12;
}
arrayList10.addAll(arrayMap4.values());
if (sharedElementTargetNames2.isEmpty() || (view5 = arrayMap4.get(sharedElementTargetNames2.get(i))) == null) {
defaultSpecialEffectsController = this;
view4 = view11;
} else {
defaultSpecialEffectsController = this;
OneShotPreDrawListener.add(getContainer(), new Runnable() { // from class: androidx.fragment.app.DefaultSpecialEffectsController.7
@Override // java.lang.Runnable
public void run() {
fragmentTransitionImpl2.getBoundsOnScreen(view5, rect2);
}
});
view4 = view11;
z3 = true;
}
fragmentTransitionImpl2.setSharedElementTargets(wrapTransitionInSet, view4, arrayList4);
rect = rect2;
view3 = view4;
arrayList3 = arrayList10;
fragmentTransitionImpl = fragmentTransitionImpl2;
fragmentTransitionImpl2.scheduleRemoveTargets(wrapTransitionInSet, null, null, null, null, wrapTransitionInSet, arrayList3);
operation5 = operation;
hashMap2 = hashMap4;
hashMap2.put(operation5, true);
operation4 = operation2;
hashMap2.put(operation4, true);
obj3 = wrapTransitionInSet;
}
}
z2 = z;
rect2 = rect;
view6 = view3;
arrayList8 = arrayList3;
operation6 = operation5;
hashMap3 = hashMap2;
operation7 = operation4;
fragmentTransitionImpl2 = fragmentTransitionImpl;
arrayMap2 = arrayMap;
ArrayList<View> arrayList11 = arrayList4;
defaultSpecialEffectsController2 = defaultSpecialEffectsController;
arrayList7 = arrayList11;
}
View view13 = view7;
ArrayMap arrayMap5 = arrayMap2;
SpecialEffectsController.Operation operation8 = operation7;
FragmentTransitionImpl fragmentTransitionImpl3 = fragmentTransitionImpl2;
boolean z4 = false;
ArrayList<View> arrayList12 = arrayList8;
HashMap hashMap5 = hashMap3;
Rect rect3 = rect2;
SpecialEffectsController.Operation operation9 = operation6;
View view14 = view6;
DefaultSpecialEffectsController defaultSpecialEffectsController5 = defaultSpecialEffectsController2;
ArrayList<View> arrayList13 = arrayList7;
ArrayList arrayList14 = new ArrayList();
Iterator<TransitionInfo> it2 = list.iterator();
Object obj4 = null;
Object obj5 = null;
while (it2.hasNext()) {
TransitionInfo next = it2.next();
if (next.isVisibilityUnchanged()) {
it = it2;
hashMap5.put(next.getOperation(), Boolean.valueOf(z4));
next.completeSpecialEffect();
} else {
it = it2;
Object cloneTransition = fragmentTransitionImpl3.cloneTransition(next.getTransition());
SpecialEffectsController.Operation operation10 = next.getOperation();
boolean z5 = obj3 != null && (operation10 == operation9 || operation10 == operation8);
if (cloneTransition == null) {
if (!z5) {
hashMap5.put(operation10, Boolean.valueOf(z4));
next.completeSpecialEffect();
}
arrayList = arrayList13;
view = view14;
arrayList2 = arrayList12;
mergeTransitionsTogether = obj4;
obj2 = obj5;
hashMap = hashMap5;
view2 = view13;
} else {
final ArrayList<View> arrayList15 = new ArrayList<>();
Object obj6 = obj4;
defaultSpecialEffectsController5.captureTransitioningViews(arrayList15, operation10.getFragment().mView);
if (z5) {
if (operation10 == operation9) {
arrayList15.removeAll(arrayList13);
} else {
arrayList15.removeAll(arrayList12);
}
}
if (arrayList15.isEmpty()) {
fragmentTransitionImpl3.addTarget(cloneTransition, view14);
arrayList = arrayList13;
view = view14;
arrayList2 = arrayList12;
operation3 = operation10;
obj2 = obj5;
hashMap = hashMap5;
obj = obj6;
} else {
fragmentTransitionImpl3.addTargets(cloneTransition, arrayList15);
view = view14;
obj = obj6;
arrayList = arrayList13;
obj2 = obj5;
arrayList2 = arrayList12;
hashMap = hashMap5;
fragmentTransitionImpl3.scheduleRemoveTargets(cloneTransition, cloneTransition, arrayList15, null, null, null, null);
if (operation10.getFinalState() == SpecialEffectsController.Operation.State.GONE) {
operation3 = operation10;
list2.remove(operation3);
ArrayList<View> arrayList16 = new ArrayList<>(arrayList15);
arrayList16.remove(operation3.getFragment().mView);
fragmentTransitionImpl3.scheduleHideFragmentView(cloneTransition, operation3.getFragment().mView, arrayList16);
OneShotPreDrawListener.add(getContainer(), new Runnable() { // from class: androidx.fragment.app.DefaultSpecialEffectsController.8
@Override // java.lang.Runnable
public void run() {
FragmentTransition.setViewVisibility(arrayList15, 4);
}
});
} else {
operation3 = operation10;
}
}
if (operation3.getFinalState() == SpecialEffectsController.Operation.State.VISIBLE) {
arrayList14.addAll(arrayList15);
if (z3) {
fragmentTransitionImpl3.setEpicenter(cloneTransition, rect3);
}
view2 = view13;
} else {
view2 = view13;
fragmentTransitionImpl3.setEpicenter(cloneTransition, view2);
}
hashMap.put(operation3, true);
if (next.isOverlapAllowed()) {
obj2 = fragmentTransitionImpl3.mergeTransitionsTogether(obj2, cloneTransition, null);
mergeTransitionsTogether = obj;
} else {
mergeTransitionsTogether = fragmentTransitionImpl3.mergeTransitionsTogether(obj, cloneTransition, null);
}
}
view13 = view2;
obj5 = obj2;
obj4 = mergeTransitionsTogether;
hashMap5 = hashMap;
view14 = view;
arrayList13 = arrayList;
arrayList12 = arrayList2;
z4 = false;
}
it2 = it;
}
ArrayList<View> arrayList17 = arrayList13;
ArrayList<View> arrayList18 = arrayList12;
HashMap hashMap6 = hashMap5;
Object mergeTransitionsInSequence = fragmentTransitionImpl3.mergeTransitionsInSequence(obj5, obj4, obj3);
for (final TransitionInfo transitionInfo4 : list) {
if (!transitionInfo4.isVisibilityUnchanged()) {
Object transition = transitionInfo4.getTransition();
SpecialEffectsController.Operation operation11 = transitionInfo4.getOperation();
boolean z6 = obj3 != null && (operation11 == operation9 || operation11 == operation8);
if (transition != null || z6) {
if (!ViewCompat.isLaidOut(getContainer())) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: Container " + getContainer() + " has not been laid out. Completing operation " + operation11);
}
transitionInfo4.completeSpecialEffect();
} else {
fragmentTransitionImpl3.setListenerForTransitionEnd(transitionInfo4.getOperation().getFragment(), mergeTransitionsInSequence, transitionInfo4.getSignal(), new Runnable() { // from class: androidx.fragment.app.DefaultSpecialEffectsController.9
@Override // java.lang.Runnable
public void run() {
transitionInfo4.completeSpecialEffect();
}
});
}
}
}
}
if (!ViewCompat.isLaidOut(getContainer())) {
return hashMap6;
}
FragmentTransition.setViewVisibility(arrayList14, 4);
ArrayList<String> prepareSetNameOverridesReordered = fragmentTransitionImpl3.prepareSetNameOverridesReordered(arrayList18);
fragmentTransitionImpl3.beginDelayedTransition(getContainer(), mergeTransitionsInSequence);
fragmentTransitionImpl3.setNameOverridesReordered(getContainer(), arrayList17, arrayList18, prepareSetNameOverridesReordered, arrayMap5);
FragmentTransition.setViewVisibility(arrayList14, 0);
fragmentTransitionImpl3.swapSharedElementTargets(obj3, arrayList17, arrayList18);
return hashMap6;
}
void retainMatchingViews(ArrayMap<String, View> arrayMap, Collection<String> collection) {
Iterator<Map.Entry<String, View>> it = arrayMap.entrySet().iterator();
while (it.hasNext()) {
if (!collection.contains(ViewCompat.getTransitionName(it.next().getValue()))) {
it.remove();
}
}
}
void captureTransitioningViews(ArrayList<View> arrayList, View view) {
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
if (ViewGroupCompat.isTransitionGroup(viewGroup)) {
if (arrayList.contains(view)) {
return;
}
arrayList.add(viewGroup);
return;
}
int childCount = viewGroup.getChildCount();
for (int i = 0; i < childCount; i++) {
View childAt = viewGroup.getChildAt(i);
if (childAt.getVisibility() == 0) {
captureTransitioningViews(arrayList, childAt);
}
}
return;
}
if (arrayList.contains(view)) {
return;
}
arrayList.add(view);
}
void findNamedViews(Map<String, View> map, View view) {
String transitionName = ViewCompat.getTransitionName(view);
if (transitionName != null) {
map.put(transitionName, view);
}
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
int childCount = viewGroup.getChildCount();
for (int i = 0; i < childCount; i++) {
View childAt = viewGroup.getChildAt(i);
if (childAt.getVisibility() == 0) {
findNamedViews(map, childAt);
}
}
}
}
void applyContainerChanges(SpecialEffectsController.Operation operation) {
operation.getFinalState().applyState(operation.getFragment().mView);
}
private static class SpecialEffectsInfo {
private final SpecialEffectsController.Operation mOperation;
private final CancellationSignal mSignal;
SpecialEffectsController.Operation getOperation() {
return this.mOperation;
}
CancellationSignal getSignal() {
return this.mSignal;
}
SpecialEffectsInfo(SpecialEffectsController.Operation operation, CancellationSignal cancellationSignal) {
this.mOperation = operation;
this.mSignal = cancellationSignal;
}
boolean isVisibilityUnchanged() {
SpecialEffectsController.Operation.State from = SpecialEffectsController.Operation.State.from(this.mOperation.getFragment().mView);
SpecialEffectsController.Operation.State finalState = this.mOperation.getFinalState();
return from == finalState || !(from == SpecialEffectsController.Operation.State.VISIBLE || finalState == SpecialEffectsController.Operation.State.VISIBLE);
}
void completeSpecialEffect() {
this.mOperation.completeSpecialEffect(this.mSignal);
}
}
private static class AnimationInfo extends SpecialEffectsInfo {
private FragmentAnim.AnimationOrAnimator mAnimation;
private boolean mIsPop;
private boolean mLoadedAnim;
AnimationInfo(SpecialEffectsController.Operation operation, CancellationSignal cancellationSignal, boolean z) {
super(operation, cancellationSignal);
this.mLoadedAnim = false;
this.mIsPop = z;
}
FragmentAnim.AnimationOrAnimator getAnimation(Context context) {
if (this.mLoadedAnim) {
return this.mAnimation;
}
FragmentAnim.AnimationOrAnimator loadAnimation = FragmentAnim.loadAnimation(context, getOperation().getFragment(), getOperation().getFinalState() == SpecialEffectsController.Operation.State.VISIBLE, this.mIsPop);
this.mAnimation = loadAnimation;
this.mLoadedAnim = true;
return loadAnimation;
}
}
private static class TransitionInfo extends SpecialEffectsInfo {
private final boolean mOverlapAllowed;
private final Object mSharedElementTransition;
private final Object mTransition;
public Object getSharedElementTransition() {
return this.mSharedElementTransition;
}
Object getTransition() {
return this.mTransition;
}
public boolean hasSharedElementTransition() {
return this.mSharedElementTransition != null;
}
boolean isOverlapAllowed() {
return this.mOverlapAllowed;
}
TransitionInfo(SpecialEffectsController.Operation operation, CancellationSignal cancellationSignal, boolean z, boolean z2) {
super(operation, cancellationSignal);
Object exitTransition;
Object enterTransition;
boolean allowEnterTransitionOverlap;
if (operation.getFinalState() == SpecialEffectsController.Operation.State.VISIBLE) {
if (z) {
enterTransition = operation.getFragment().getReenterTransition();
} else {
enterTransition = operation.getFragment().getEnterTransition();
}
this.mTransition = enterTransition;
if (z) {
allowEnterTransitionOverlap = operation.getFragment().getAllowReturnTransitionOverlap();
} else {
allowEnterTransitionOverlap = operation.getFragment().getAllowEnterTransitionOverlap();
}
this.mOverlapAllowed = allowEnterTransitionOverlap;
} else {
if (z) {
exitTransition = operation.getFragment().getReturnTransition();
} else {
exitTransition = operation.getFragment().getExitTransition();
}
this.mTransition = exitTransition;
this.mOverlapAllowed = true;
}
if (!z2) {
this.mSharedElementTransition = null;
} else if (z) {
this.mSharedElementTransition = operation.getFragment().getSharedElementReturnTransition();
} else {
this.mSharedElementTransition = operation.getFragment().getSharedElementEnterTransition();
}
}
FragmentTransitionImpl getHandlingImpl() {
FragmentTransitionImpl handlingImpl = getHandlingImpl(this.mTransition);
FragmentTransitionImpl handlingImpl2 = getHandlingImpl(this.mSharedElementTransition);
if (handlingImpl == null || handlingImpl2 == null || handlingImpl == handlingImpl2) {
return handlingImpl != null ? handlingImpl : handlingImpl2;
}
throw new IllegalArgumentException("Mixing framework transitions and AndroidX transitions is not allowed. Fragment " + getOperation().getFragment() + " returned Transition " + this.mTransition + " which uses a different Transition type than its shared element transition " + this.mSharedElementTransition);
}
private FragmentTransitionImpl getHandlingImpl(Object obj) {
if (obj == null) {
return null;
}
if (FragmentTransition.PLATFORM_IMPL != null && FragmentTransition.PLATFORM_IMPL.canHandle(obj)) {
return FragmentTransition.PLATFORM_IMPL;
}
if (FragmentTransition.SUPPORT_IMPL != null && FragmentTransition.SUPPORT_IMPL.canHandle(obj)) {
return FragmentTransition.SUPPORT_IMPL;
}
throw new IllegalArgumentException("Transition " + obj + " for fragment " + getOperation().getFragment() + " is not a valid framework Transition or AndroidX Transition");
}
}
}

View File

@ -0,0 +1,510 @@
package androidx.fragment.app;
import android.R;
import android.app.Activity;
import android.app.Dialog;
import android.content.Context;
import android.content.DialogInterface;
import android.os.Bundle;
import android.os.Handler;
import android.os.Looper;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.Window;
import androidx.lifecycle.LifecycleOwner;
import androidx.lifecycle.Observer;
import androidx.lifecycle.ViewTreeLifecycleOwner;
import androidx.lifecycle.ViewTreeViewModelStoreOwner;
import androidx.savedstate.ViewTreeSavedStateRegistryOwner;
/* loaded from: classes.dex */
public class DialogFragment extends Fragment implements DialogInterface.OnCancelListener, DialogInterface.OnDismissListener {
private static final String SAVED_BACK_STACK_ID = "android:backStackId";
private static final String SAVED_CANCELABLE = "android:cancelable";
private static final String SAVED_DIALOG_STATE_TAG = "android:savedDialogState";
private static final String SAVED_INTERNAL_DIALOG_SHOWING = "android:dialogShowing";
private static final String SAVED_SHOWS_DIALOG = "android:showsDialog";
private static final String SAVED_STYLE = "android:style";
private static final String SAVED_THEME = "android:theme";
public static final int STYLE_NORMAL = 0;
public static final int STYLE_NO_FRAME = 2;
public static final int STYLE_NO_INPUT = 3;
public static final int STYLE_NO_TITLE = 1;
private int mBackStackId;
private boolean mCancelable;
private boolean mCreatingDialog;
private Dialog mDialog;
private boolean mDialogCreated;
private Runnable mDismissRunnable;
private boolean mDismissed;
private Handler mHandler;
private Observer<LifecycleOwner> mObserver;
private DialogInterface.OnCancelListener mOnCancelListener;
private DialogInterface.OnDismissListener mOnDismissListener;
private boolean mShownByMe;
private boolean mShowsDialog;
private int mStyle;
private int mTheme;
private boolean mViewDestroyed;
public Dialog getDialog() {
return this.mDialog;
}
public boolean getShowsDialog() {
return this.mShowsDialog;
}
public int getTheme() {
return this.mTheme;
}
public boolean isCancelable() {
return this.mCancelable;
}
@Override // android.content.DialogInterface.OnCancelListener
public void onCancel(DialogInterface dialogInterface) {
}
boolean onHasView() {
return this.mDialogCreated;
}
public void setShowsDialog(boolean z) {
this.mShowsDialog = z;
}
public DialogFragment() {
this.mDismissRunnable = new Runnable() { // from class: androidx.fragment.app.DialogFragment.1
@Override // java.lang.Runnable
public void run() {
DialogFragment.this.mOnDismissListener.onDismiss(DialogFragment.this.mDialog);
}
};
this.mOnCancelListener = new DialogInterface.OnCancelListener() { // from class: androidx.fragment.app.DialogFragment.2
@Override // android.content.DialogInterface.OnCancelListener
public void onCancel(DialogInterface dialogInterface) {
if (DialogFragment.this.mDialog != null) {
DialogFragment dialogFragment = DialogFragment.this;
dialogFragment.onCancel(dialogFragment.mDialog);
}
}
};
this.mOnDismissListener = new DialogInterface.OnDismissListener() { // from class: androidx.fragment.app.DialogFragment.3
@Override // android.content.DialogInterface.OnDismissListener
public void onDismiss(DialogInterface dialogInterface) {
if (DialogFragment.this.mDialog != null) {
DialogFragment dialogFragment = DialogFragment.this;
dialogFragment.onDismiss(dialogFragment.mDialog);
}
}
};
this.mStyle = 0;
this.mTheme = 0;
this.mCancelable = true;
this.mShowsDialog = true;
this.mBackStackId = -1;
this.mObserver = new Observer<LifecycleOwner>() { // from class: androidx.fragment.app.DialogFragment.4
@Override // androidx.lifecycle.Observer
public void onChanged(LifecycleOwner lifecycleOwner) {
if (lifecycleOwner == null || !DialogFragment.this.mShowsDialog) {
return;
}
View requireView = DialogFragment.this.requireView();
if (requireView.getParent() == null) {
if (DialogFragment.this.mDialog != null) {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d("FragmentManager", "DialogFragment " + this + " setting the content view on " + DialogFragment.this.mDialog);
}
DialogFragment.this.mDialog.setContentView(requireView);
return;
}
return;
}
throw new IllegalStateException("DialogFragment can not be attached to a container view");
}
};
this.mDialogCreated = false;
}
public DialogFragment(int i) {
super(i);
this.mDismissRunnable = new Runnable() { // from class: androidx.fragment.app.DialogFragment.1
@Override // java.lang.Runnable
public void run() {
DialogFragment.this.mOnDismissListener.onDismiss(DialogFragment.this.mDialog);
}
};
this.mOnCancelListener = new DialogInterface.OnCancelListener() { // from class: androidx.fragment.app.DialogFragment.2
@Override // android.content.DialogInterface.OnCancelListener
public void onCancel(DialogInterface dialogInterface) {
if (DialogFragment.this.mDialog != null) {
DialogFragment dialogFragment = DialogFragment.this;
dialogFragment.onCancel(dialogFragment.mDialog);
}
}
};
this.mOnDismissListener = new DialogInterface.OnDismissListener() { // from class: androidx.fragment.app.DialogFragment.3
@Override // android.content.DialogInterface.OnDismissListener
public void onDismiss(DialogInterface dialogInterface) {
if (DialogFragment.this.mDialog != null) {
DialogFragment dialogFragment = DialogFragment.this;
dialogFragment.onDismiss(dialogFragment.mDialog);
}
}
};
this.mStyle = 0;
this.mTheme = 0;
this.mCancelable = true;
this.mShowsDialog = true;
this.mBackStackId = -1;
this.mObserver = new Observer<LifecycleOwner>() { // from class: androidx.fragment.app.DialogFragment.4
@Override // androidx.lifecycle.Observer
public void onChanged(LifecycleOwner lifecycleOwner) {
if (lifecycleOwner == null || !DialogFragment.this.mShowsDialog) {
return;
}
View requireView = DialogFragment.this.requireView();
if (requireView.getParent() == null) {
if (DialogFragment.this.mDialog != null) {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d("FragmentManager", "DialogFragment " + this + " setting the content view on " + DialogFragment.this.mDialog);
}
DialogFragment.this.mDialog.setContentView(requireView);
return;
}
return;
}
throw new IllegalStateException("DialogFragment can not be attached to a container view");
}
};
this.mDialogCreated = false;
}
public void setStyle(int i, int i2) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.d("FragmentManager", "Setting style and theme for DialogFragment " + this + " to " + i + ", " + i2);
}
this.mStyle = i;
if (i == 2 || i == 3) {
this.mTheme = R.style.Theme.Panel;
}
if (i2 != 0) {
this.mTheme = i2;
}
}
public void show(FragmentManager fragmentManager, String str) {
this.mDismissed = false;
this.mShownByMe = true;
FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
beginTransaction.add(this, str);
beginTransaction.commit();
}
public int show(FragmentTransaction fragmentTransaction, String str) {
this.mDismissed = false;
this.mShownByMe = true;
fragmentTransaction.add(this, str);
this.mViewDestroyed = false;
int commit = fragmentTransaction.commit();
this.mBackStackId = commit;
return commit;
}
public void showNow(FragmentManager fragmentManager, String str) {
this.mDismissed = false;
this.mShownByMe = true;
FragmentTransaction beginTransaction = fragmentManager.beginTransaction();
beginTransaction.add(this, str);
beginTransaction.commitNow();
}
public void dismiss() {
dismissInternal(false, false);
}
public void dismissAllowingStateLoss() {
dismissInternal(true, false);
}
private void dismissInternal(boolean z, boolean z2) {
if (this.mDismissed) {
return;
}
this.mDismissed = true;
this.mShownByMe = false;
Dialog dialog = this.mDialog;
if (dialog != null) {
dialog.setOnDismissListener(null);
this.mDialog.dismiss();
if (!z2) {
if (Looper.myLooper() == this.mHandler.getLooper()) {
onDismiss(this.mDialog);
} else {
this.mHandler.post(this.mDismissRunnable);
}
}
}
this.mViewDestroyed = true;
if (this.mBackStackId >= 0) {
getParentFragmentManager().popBackStack(this.mBackStackId, 1);
this.mBackStackId = -1;
return;
}
FragmentTransaction beginTransaction = getParentFragmentManager().beginTransaction();
beginTransaction.remove(this);
if (z) {
beginTransaction.commitAllowingStateLoss();
} else {
beginTransaction.commit();
}
}
public final Dialog requireDialog() {
Dialog dialog = getDialog();
if (dialog != null) {
return dialog;
}
throw new IllegalStateException("DialogFragment " + this + " does not have a Dialog.");
}
public void setCancelable(boolean z) {
this.mCancelable = z;
Dialog dialog = this.mDialog;
if (dialog != null) {
dialog.setCancelable(z);
}
}
@Override // androidx.fragment.app.Fragment
public void onAttach(Context context) {
super.onAttach(context);
getViewLifecycleOwnerLiveData().observeForever(this.mObserver);
if (this.mShownByMe) {
return;
}
this.mDismissed = false;
}
@Override // androidx.fragment.app.Fragment
public void onDetach() {
super.onDetach();
if (!this.mShownByMe && !this.mDismissed) {
this.mDismissed = true;
}
getViewLifecycleOwnerLiveData().removeObserver(this.mObserver);
}
@Override // androidx.fragment.app.Fragment
public void onCreate(Bundle bundle) {
super.onCreate(bundle);
this.mHandler = new Handler();
this.mShowsDialog = this.mContainerId == 0;
if (bundle != null) {
this.mStyle = bundle.getInt(SAVED_STYLE, 0);
this.mTheme = bundle.getInt(SAVED_THEME, 0);
this.mCancelable = bundle.getBoolean(SAVED_CANCELABLE, true);
this.mShowsDialog = bundle.getBoolean(SAVED_SHOWS_DIALOG, this.mShowsDialog);
this.mBackStackId = bundle.getInt(SAVED_BACK_STACK_ID, -1);
}
}
@Override // androidx.fragment.app.Fragment
void performCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) {
Bundle bundle2;
super.performCreateView(layoutInflater, viewGroup, bundle);
if (this.mView != null || this.mDialog == null || bundle == null || (bundle2 = bundle.getBundle(SAVED_DIALOG_STATE_TAG)) == null) {
return;
}
this.mDialog.onRestoreInstanceState(bundle2);
}
@Override // androidx.fragment.app.Fragment
FragmentContainer createFragmentContainer() {
final FragmentContainer createFragmentContainer = super.createFragmentContainer();
return new FragmentContainer() { // from class: androidx.fragment.app.DialogFragment.5
@Override // androidx.fragment.app.FragmentContainer
public View onFindViewById(int i) {
if (createFragmentContainer.onHasView()) {
return createFragmentContainer.onFindViewById(i);
}
return DialogFragment.this.onFindViewById(i);
}
@Override // androidx.fragment.app.FragmentContainer
public boolean onHasView() {
return createFragmentContainer.onHasView() || DialogFragment.this.onHasView();
}
};
}
View onFindViewById(int i) {
Dialog dialog = this.mDialog;
if (dialog != null) {
return dialog.findViewById(i);
}
return null;
}
@Override // androidx.fragment.app.Fragment
public LayoutInflater onGetLayoutInflater(Bundle bundle) {
LayoutInflater onGetLayoutInflater = super.onGetLayoutInflater(bundle);
if (!this.mShowsDialog || this.mCreatingDialog) {
if (FragmentManager.isLoggingEnabled(2)) {
String str = "getting layout inflater for DialogFragment " + this;
if (!this.mShowsDialog) {
Log.d("FragmentManager", "mShowsDialog = false: " + str);
} else {
Log.d("FragmentManager", "mCreatingDialog = true: " + str);
}
}
return onGetLayoutInflater;
}
prepareDialog(bundle);
if (FragmentManager.isLoggingEnabled(2)) {
Log.d("FragmentManager", "get layout inflater for DialogFragment " + this + " from dialog context");
}
Dialog dialog = this.mDialog;
return dialog != null ? onGetLayoutInflater.cloneInContext(dialog.getContext()) : onGetLayoutInflater;
}
public void setupDialog(Dialog dialog, int i) {
if (i != 1 && i != 2) {
if (i != 3) {
return;
}
Window window = dialog.getWindow();
if (window != null) {
window.addFlags(24);
}
}
dialog.requestWindowFeature(1);
}
public Dialog onCreateDialog(Bundle bundle) {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d("FragmentManager", "onCreateDialog called for DialogFragment " + this);
}
return new Dialog(requireContext(), getTheme());
}
@Override // android.content.DialogInterface.OnDismissListener
public void onDismiss(DialogInterface dialogInterface) {
if (this.mViewDestroyed) {
return;
}
if (FragmentManager.isLoggingEnabled(3)) {
Log.d("FragmentManager", "onDismiss called for DialogFragment " + this);
}
dismissInternal(true, true);
}
private void prepareDialog(Bundle bundle) {
if (this.mShowsDialog && !this.mDialogCreated) {
try {
this.mCreatingDialog = true;
Dialog onCreateDialog = onCreateDialog(bundle);
this.mDialog = onCreateDialog;
if (this.mShowsDialog) {
setupDialog(onCreateDialog, this.mStyle);
Context context = getContext();
if (context instanceof Activity) {
this.mDialog.setOwnerActivity((Activity) context);
}
this.mDialog.setCancelable(this.mCancelable);
this.mDialog.setOnCancelListener(this.mOnCancelListener);
this.mDialog.setOnDismissListener(this.mOnDismissListener);
this.mDialogCreated = true;
} else {
this.mDialog = null;
}
} finally {
this.mCreatingDialog = false;
}
}
}
@Override // androidx.fragment.app.Fragment
public void onViewStateRestored(Bundle bundle) {
Bundle bundle2;
super.onViewStateRestored(bundle);
if (this.mDialog == null || bundle == null || (bundle2 = bundle.getBundle(SAVED_DIALOG_STATE_TAG)) == null) {
return;
}
this.mDialog.onRestoreInstanceState(bundle2);
}
@Override // androidx.fragment.app.Fragment
public void onStart() {
super.onStart();
Dialog dialog = this.mDialog;
if (dialog != null) {
this.mViewDestroyed = false;
dialog.show();
View decorView = this.mDialog.getWindow().getDecorView();
ViewTreeLifecycleOwner.set(decorView, this);
ViewTreeViewModelStoreOwner.set(decorView, this);
ViewTreeSavedStateRegistryOwner.set(decorView, this);
}
}
@Override // androidx.fragment.app.Fragment
public void onSaveInstanceState(Bundle bundle) {
super.onSaveInstanceState(bundle);
Dialog dialog = this.mDialog;
if (dialog != null) {
Bundle onSaveInstanceState = dialog.onSaveInstanceState();
onSaveInstanceState.putBoolean(SAVED_INTERNAL_DIALOG_SHOWING, false);
bundle.putBundle(SAVED_DIALOG_STATE_TAG, onSaveInstanceState);
}
int i = this.mStyle;
if (i != 0) {
bundle.putInt(SAVED_STYLE, i);
}
int i2 = this.mTheme;
if (i2 != 0) {
bundle.putInt(SAVED_THEME, i2);
}
boolean z = this.mCancelable;
if (!z) {
bundle.putBoolean(SAVED_CANCELABLE, z);
}
boolean z2 = this.mShowsDialog;
if (!z2) {
bundle.putBoolean(SAVED_SHOWS_DIALOG, z2);
}
int i3 = this.mBackStackId;
if (i3 != -1) {
bundle.putInt(SAVED_BACK_STACK_ID, i3);
}
}
@Override // androidx.fragment.app.Fragment
public void onStop() {
super.onStop();
Dialog dialog = this.mDialog;
if (dialog != null) {
dialog.hide();
}
}
@Override // androidx.fragment.app.Fragment
public void onDestroyView() {
super.onDestroyView();
Dialog dialog = this.mDialog;
if (dialog != null) {
this.mViewDestroyed = true;
dialog.setOnDismissListener(null);
this.mDialog.dismiss();
if (!this.mDismissed) {
onDismiss(this.mDialog);
}
this.mDialog = null;
this.mDialogCreated = false;
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,447 @@
package androidx.fragment.app;
import android.content.Context;
import android.content.Intent;
import android.content.IntentSender;
import android.content.res.Configuration;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.LayoutInflater;
import android.view.Menu;
import android.view.MenuItem;
import android.view.View;
import android.view.Window;
import androidx.activity.ComponentActivity;
import androidx.activity.OnBackPressedDispatcher;
import androidx.activity.OnBackPressedDispatcherOwner;
import androidx.activity.contextaware.OnContextAvailableListener;
import androidx.activity.result.ActivityResultRegistry;
import androidx.activity.result.ActivityResultRegistryOwner;
import androidx.core.app.ActivityCompat;
import androidx.core.app.SharedElementCallback;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleRegistry;
import androidx.lifecycle.ViewModelStore;
import androidx.lifecycle.ViewModelStoreOwner;
import androidx.loader.app.LoaderManager;
import androidx.savedstate.SavedStateRegistry;
import java.io.FileDescriptor;
import java.io.PrintWriter;
/* loaded from: classes.dex */
public class FragmentActivity extends ComponentActivity implements ActivityCompat.OnRequestPermissionsResultCallback, ActivityCompat.RequestPermissionsRequestCodeValidator {
static final String FRAGMENTS_TAG = "android:support:fragments";
boolean mCreated;
final LifecycleRegistry mFragmentLifecycleRegistry;
final FragmentController mFragments;
boolean mResumed;
boolean mStopped;
@Deprecated
public void onAttachFragment(Fragment fragment) {
}
@Override // androidx.core.app.ActivityCompat.RequestPermissionsRequestCodeValidator
@Deprecated
public final void validateRequestPermissionsRequestCode(int i) {
}
public FragmentActivity() {
this.mFragments = FragmentController.createController(new HostCallbacks());
this.mFragmentLifecycleRegistry = new LifecycleRegistry(this);
this.mStopped = true;
init();
}
public FragmentActivity(int i) {
super(i);
this.mFragments = FragmentController.createController(new HostCallbacks());
this.mFragmentLifecycleRegistry = new LifecycleRegistry(this);
this.mStopped = true;
init();
}
private void init() {
getSavedStateRegistry().registerSavedStateProvider(FRAGMENTS_TAG, new SavedStateRegistry.SavedStateProvider() { // from class: androidx.fragment.app.FragmentActivity.1
@Override // androidx.savedstate.SavedStateRegistry.SavedStateProvider
public Bundle saveState() {
Bundle bundle = new Bundle();
FragmentActivity.this.markFragmentsCreated();
FragmentActivity.this.mFragmentLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_STOP);
Parcelable saveAllState = FragmentActivity.this.mFragments.saveAllState();
if (saveAllState != null) {
bundle.putParcelable(FragmentActivity.FRAGMENTS_TAG, saveAllState);
}
return bundle;
}
});
addOnContextAvailableListener(new OnContextAvailableListener() { // from class: androidx.fragment.app.FragmentActivity.2
@Override // androidx.activity.contextaware.OnContextAvailableListener
public void onContextAvailable(Context context) {
FragmentActivity.this.mFragments.attachHost(null);
Bundle consumeRestoredStateForKey = FragmentActivity.this.getSavedStateRegistry().consumeRestoredStateForKey(FragmentActivity.FRAGMENTS_TAG);
if (consumeRestoredStateForKey != null) {
FragmentActivity.this.mFragments.restoreSaveState(consumeRestoredStateForKey.getParcelable(FragmentActivity.FRAGMENTS_TAG));
}
}
});
}
@Override // androidx.activity.ComponentActivity, android.app.Activity
protected void onActivityResult(int i, int i2, Intent intent) {
this.mFragments.noteStateNotSaved();
super.onActivityResult(i, i2, intent);
}
public void supportFinishAfterTransition() {
ActivityCompat.finishAfterTransition(this);
}
public void setEnterSharedElementCallback(SharedElementCallback sharedElementCallback) {
ActivityCompat.setEnterSharedElementCallback(this, sharedElementCallback);
}
public void setExitSharedElementCallback(SharedElementCallback sharedElementCallback) {
ActivityCompat.setExitSharedElementCallback(this, sharedElementCallback);
}
public void supportPostponeEnterTransition() {
ActivityCompat.postponeEnterTransition(this);
}
public void supportStartPostponedEnterTransition() {
ActivityCompat.startPostponedEnterTransition(this);
}
@Override // androidx.activity.ComponentActivity, android.app.Activity
public void onMultiWindowModeChanged(boolean z) {
this.mFragments.dispatchMultiWindowModeChanged(z);
}
@Override // androidx.activity.ComponentActivity, android.app.Activity
public void onPictureInPictureModeChanged(boolean z) {
this.mFragments.dispatchPictureInPictureModeChanged(z);
}
@Override // androidx.activity.ComponentActivity, android.app.Activity, android.content.ComponentCallbacks
public void onConfigurationChanged(Configuration configuration) {
this.mFragments.noteStateNotSaved();
super.onConfigurationChanged(configuration);
this.mFragments.dispatchConfigurationChanged(configuration);
}
@Override // androidx.activity.ComponentActivity, androidx.core.app.ComponentActivity, android.app.Activity
protected void onCreate(Bundle bundle) {
super.onCreate(bundle);
this.mFragmentLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_CREATE);
this.mFragments.dispatchCreate();
}
@Override // androidx.activity.ComponentActivity, android.app.Activity, android.view.Window.Callback
public boolean onCreatePanelMenu(int i, Menu menu) {
if (i == 0) {
return super.onCreatePanelMenu(i, menu) | this.mFragments.dispatchCreateOptionsMenu(menu, getMenuInflater());
}
return super.onCreatePanelMenu(i, menu);
}
@Override // android.app.Activity, android.view.LayoutInflater.Factory2
public View onCreateView(View view, String str, Context context, AttributeSet attributeSet) {
View dispatchFragmentsOnCreateView = dispatchFragmentsOnCreateView(view, str, context, attributeSet);
return dispatchFragmentsOnCreateView == null ? super.onCreateView(view, str, context, attributeSet) : dispatchFragmentsOnCreateView;
}
@Override // android.app.Activity, android.view.LayoutInflater.Factory
public View onCreateView(String str, Context context, AttributeSet attributeSet) {
View dispatchFragmentsOnCreateView = dispatchFragmentsOnCreateView(null, str, context, attributeSet);
return dispatchFragmentsOnCreateView == null ? super.onCreateView(str, context, attributeSet) : dispatchFragmentsOnCreateView;
}
final View dispatchFragmentsOnCreateView(View view, String str, Context context, AttributeSet attributeSet) {
return this.mFragments.onCreateView(view, str, context, attributeSet);
}
@Override // android.app.Activity
protected void onDestroy() {
super.onDestroy();
this.mFragments.dispatchDestroy();
this.mFragmentLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_DESTROY);
}
@Override // android.app.Activity, android.content.ComponentCallbacks
public void onLowMemory() {
super.onLowMemory();
this.mFragments.dispatchLowMemory();
}
@Override // androidx.activity.ComponentActivity, android.app.Activity, android.view.Window.Callback
public boolean onMenuItemSelected(int i, MenuItem menuItem) {
if (super.onMenuItemSelected(i, menuItem)) {
return true;
}
if (i == 0) {
return this.mFragments.dispatchOptionsItemSelected(menuItem);
}
if (i != 6) {
return false;
}
return this.mFragments.dispatchContextItemSelected(menuItem);
}
@Override // androidx.activity.ComponentActivity, android.app.Activity, android.view.Window.Callback
public void onPanelClosed(int i, Menu menu) {
if (i == 0) {
this.mFragments.dispatchOptionsMenuClosed(menu);
}
super.onPanelClosed(i, menu);
}
@Override // android.app.Activity
protected void onPause() {
super.onPause();
this.mResumed = false;
this.mFragments.dispatchPause();
this.mFragmentLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_PAUSE);
}
@Override // androidx.activity.ComponentActivity, android.app.Activity
protected void onNewIntent(Intent intent) {
this.mFragments.noteStateNotSaved();
super.onNewIntent(intent);
}
@Override // android.app.Activity
public void onStateNotSaved() {
this.mFragments.noteStateNotSaved();
}
@Override // android.app.Activity
protected void onResume() {
this.mFragments.noteStateNotSaved();
super.onResume();
this.mResumed = true;
this.mFragments.execPendingActions();
}
@Override // android.app.Activity
protected void onPostResume() {
super.onPostResume();
onResumeFragments();
}
protected void onResumeFragments() {
this.mFragmentLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_RESUME);
this.mFragments.dispatchResume();
}
@Override // androidx.activity.ComponentActivity, android.app.Activity, android.view.Window.Callback
public boolean onPreparePanel(int i, View view, Menu menu) {
if (i == 0) {
return onPrepareOptionsPanel(view, menu) | this.mFragments.dispatchPrepareOptionsMenu(menu);
}
return super.onPreparePanel(i, view, menu);
}
@Deprecated
protected boolean onPrepareOptionsPanel(View view, Menu menu) {
return super.onPreparePanel(0, view, menu);
}
@Override // android.app.Activity
protected void onStart() {
this.mFragments.noteStateNotSaved();
super.onStart();
this.mStopped = false;
if (!this.mCreated) {
this.mCreated = true;
this.mFragments.dispatchActivityCreated();
}
this.mFragments.execPendingActions();
this.mFragmentLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_START);
this.mFragments.dispatchStart();
}
@Override // android.app.Activity
protected void onStop() {
super.onStop();
this.mStopped = true;
markFragmentsCreated();
this.mFragments.dispatchStop();
this.mFragmentLifecycleRegistry.handleLifecycleEvent(Lifecycle.Event.ON_STOP);
}
@Deprecated
public void supportInvalidateOptionsMenu() {
invalidateOptionsMenu();
}
@Override // android.app.Activity
public void dump(String str, FileDescriptor fileDescriptor, PrintWriter printWriter, String[] strArr) {
super.dump(str, fileDescriptor, printWriter, strArr);
printWriter.print(str);
printWriter.print("Local FragmentActivity ");
printWriter.print(Integer.toHexString(System.identityHashCode(this)));
printWriter.println(" State:");
String str2 = str + " ";
printWriter.print(str2);
printWriter.print("mCreated=");
printWriter.print(this.mCreated);
printWriter.print(" mResumed=");
printWriter.print(this.mResumed);
printWriter.print(" mStopped=");
printWriter.print(this.mStopped);
if (getApplication() != null) {
LoaderManager.getInstance(this).dump(str2, fileDescriptor, printWriter, strArr);
}
this.mFragments.getSupportFragmentManager().dump(str, fileDescriptor, printWriter, strArr);
}
public FragmentManager getSupportFragmentManager() {
return this.mFragments.getSupportFragmentManager();
}
@Deprecated
public LoaderManager getSupportLoaderManager() {
return LoaderManager.getInstance(this);
}
@Override // androidx.activity.ComponentActivity, android.app.Activity
public void onRequestPermissionsResult(int i, String[] strArr, int[] iArr) {
this.mFragments.noteStateNotSaved();
super.onRequestPermissionsResult(i, strArr, iArr);
}
public void startActivityFromFragment(Fragment fragment, Intent intent, int i) {
startActivityFromFragment(fragment, intent, i, (Bundle) null);
}
public void startActivityFromFragment(Fragment fragment, Intent intent, int i, Bundle bundle) {
if (i == -1) {
ActivityCompat.startActivityForResult(this, intent, -1, bundle);
} else {
fragment.startActivityForResult(intent, i, bundle);
}
}
@Deprecated
public void startIntentSenderFromFragment(Fragment fragment, IntentSender intentSender, int i, Intent intent, int i2, int i3, int i4, Bundle bundle) throws IntentSender.SendIntentException {
if (i == -1) {
ActivityCompat.startIntentSenderForResult(this, intentSender, i, intent, i2, i3, i4, bundle);
} else {
fragment.startIntentSenderForResult(intentSender, i, intent, i2, i3, i4, bundle);
}
}
class HostCallbacks extends FragmentHostCallback<FragmentActivity> implements ViewModelStoreOwner, OnBackPressedDispatcherOwner, ActivityResultRegistryOwner, FragmentOnAttachListener {
/* JADX WARN: Can't rename method to resolve collision */
@Override // androidx.fragment.app.FragmentHostCallback
public FragmentActivity onGetHost() {
return FragmentActivity.this;
}
public HostCallbacks() {
super(FragmentActivity.this);
}
@Override // androidx.lifecycle.LifecycleOwner
public Lifecycle getLifecycle() {
return FragmentActivity.this.mFragmentLifecycleRegistry;
}
@Override // androidx.lifecycle.ViewModelStoreOwner
public ViewModelStore getViewModelStore() {
return FragmentActivity.this.getViewModelStore();
}
@Override // androidx.activity.OnBackPressedDispatcherOwner
public OnBackPressedDispatcher getOnBackPressedDispatcher() {
return FragmentActivity.this.getOnBackPressedDispatcher();
}
@Override // androidx.fragment.app.FragmentHostCallback
public void onDump(String str, FileDescriptor fileDescriptor, PrintWriter printWriter, String[] strArr) {
FragmentActivity.this.dump(str, fileDescriptor, printWriter, strArr);
}
@Override // androidx.fragment.app.FragmentHostCallback
public boolean onShouldSaveFragmentState(Fragment fragment) {
return !FragmentActivity.this.isFinishing();
}
@Override // androidx.fragment.app.FragmentHostCallback
public LayoutInflater onGetLayoutInflater() {
return FragmentActivity.this.getLayoutInflater().cloneInContext(FragmentActivity.this);
}
@Override // androidx.fragment.app.FragmentHostCallback
public void onSupportInvalidateOptionsMenu() {
FragmentActivity.this.supportInvalidateOptionsMenu();
}
@Override // androidx.fragment.app.FragmentHostCallback
public boolean onShouldShowRequestPermissionRationale(String str) {
return ActivityCompat.shouldShowRequestPermissionRationale(FragmentActivity.this, str);
}
@Override // androidx.fragment.app.FragmentHostCallback
public boolean onHasWindowAnimations() {
return FragmentActivity.this.getWindow() != null;
}
@Override // androidx.fragment.app.FragmentHostCallback
public int onGetWindowAnimations() {
Window window = FragmentActivity.this.getWindow();
if (window == null) {
return 0;
}
return window.getAttributes().windowAnimations;
}
@Override // androidx.fragment.app.FragmentOnAttachListener
public void onAttachFragment(FragmentManager fragmentManager, Fragment fragment) {
FragmentActivity.this.onAttachFragment(fragment);
}
@Override // androidx.fragment.app.FragmentHostCallback, androidx.fragment.app.FragmentContainer
public View onFindViewById(int i) {
return FragmentActivity.this.findViewById(i);
}
@Override // androidx.fragment.app.FragmentHostCallback, androidx.fragment.app.FragmentContainer
public boolean onHasView() {
Window window = FragmentActivity.this.getWindow();
return (window == null || window.peekDecorView() == null) ? false : true;
}
@Override // androidx.activity.result.ActivityResultRegistryOwner
public ActivityResultRegistry getActivityResultRegistry() {
return FragmentActivity.this.getActivityResultRegistry();
}
}
void markFragmentsCreated() {
while (markState(getSupportFragmentManager(), Lifecycle.State.CREATED)) {
}
}
private static boolean markState(FragmentManager fragmentManager, Lifecycle.State state) {
boolean z = false;
for (Fragment fragment : fragmentManager.getFragments()) {
if (fragment != null) {
if (fragment.getHost() != null) {
z |= markState(fragment.getChildFragmentManager(), state);
}
if (fragment.mViewLifecycleOwner != null && fragment.mViewLifecycleOwner.getLifecycle().getState().isAtLeast(Lifecycle.State.STARTED)) {
fragment.mViewLifecycleOwner.setCurrentState(state);
z = true;
}
if (fragment.mLifecycleRegistry.getState().isAtLeast(Lifecycle.State.STARTED)) {
fragment.mLifecycleRegistry.setCurrentState(state);
z = true;
}
}
}
return z;
}
}

View File

@ -0,0 +1,239 @@
package androidx.fragment.app;
import android.animation.Animator;
import android.animation.AnimatorInflater;
import android.animation.AnimatorListenerAdapter;
import android.content.Context;
import android.content.res.Resources;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.Animation;
import android.view.animation.AnimationSet;
import android.view.animation.AnimationUtils;
import android.view.animation.Transformation;
import androidx.core.os.CancellationSignal;
import androidx.core.view.OneShotPreDrawListener;
import androidx.fragment.R;
import androidx.fragment.app.FragmentTransition;
/* loaded from: classes.dex */
class FragmentAnim {
private FragmentAnim() {
}
static AnimationOrAnimator loadAnimation(Context context, Fragment fragment, boolean z, boolean z2) {
int nextTransition = fragment.getNextTransition();
int nextAnim = getNextAnim(fragment, z, z2);
fragment.setAnimations(0, 0, 0, 0);
if (fragment.mContainer != null && fragment.mContainer.getTag(R.id.visible_removing_fragment_view_tag) != null) {
fragment.mContainer.setTag(R.id.visible_removing_fragment_view_tag, null);
}
if (fragment.mContainer != null && fragment.mContainer.getLayoutTransition() != null) {
return null;
}
Animation onCreateAnimation = fragment.onCreateAnimation(nextTransition, z, nextAnim);
if (onCreateAnimation != null) {
return new AnimationOrAnimator(onCreateAnimation);
}
Animator onCreateAnimator = fragment.onCreateAnimator(nextTransition, z, nextAnim);
if (onCreateAnimator != null) {
return new AnimationOrAnimator(onCreateAnimator);
}
if (nextAnim == 0 && nextTransition != 0) {
nextAnim = transitToAnimResourceId(nextTransition, z);
}
if (nextAnim != 0) {
boolean equals = "anim".equals(context.getResources().getResourceTypeName(nextAnim));
if (equals) {
try {
Animation loadAnimation = AnimationUtils.loadAnimation(context, nextAnim);
if (loadAnimation != null) {
return new AnimationOrAnimator(loadAnimation);
}
} catch (Resources.NotFoundException e) {
throw e;
} catch (RuntimeException unused) {
}
}
try {
Animator loadAnimator = AnimatorInflater.loadAnimator(context, nextAnim);
if (loadAnimator != null) {
return new AnimationOrAnimator(loadAnimator);
}
} catch (RuntimeException e2) {
if (equals) {
throw e2;
}
Animation loadAnimation2 = AnimationUtils.loadAnimation(context, nextAnim);
if (loadAnimation2 != null) {
return new AnimationOrAnimator(loadAnimation2);
}
}
}
return null;
}
private static int getNextAnim(Fragment fragment, boolean z, boolean z2) {
if (z2) {
if (z) {
return fragment.getPopEnterAnim();
}
return fragment.getPopExitAnim();
}
if (z) {
return fragment.getEnterAnim();
}
return fragment.getExitAnim();
}
static void animateRemoveFragment(final Fragment fragment, AnimationOrAnimator animationOrAnimator, final FragmentTransition.Callback callback) {
final View view = fragment.mView;
final ViewGroup viewGroup = fragment.mContainer;
viewGroup.startViewTransition(view);
final CancellationSignal cancellationSignal = new CancellationSignal();
cancellationSignal.setOnCancelListener(new CancellationSignal.OnCancelListener() { // from class: androidx.fragment.app.FragmentAnim.1
@Override // androidx.core.os.CancellationSignal.OnCancelListener
public void onCancel() {
if (Fragment.this.getAnimatingAway() != null) {
View animatingAway = Fragment.this.getAnimatingAway();
Fragment.this.setAnimatingAway(null);
animatingAway.clearAnimation();
}
Fragment.this.setAnimator(null);
}
});
callback.onStart(fragment, cancellationSignal);
if (animationOrAnimator.animation != null) {
EndViewTransitionAnimation endViewTransitionAnimation = new EndViewTransitionAnimation(animationOrAnimator.animation, viewGroup, view);
fragment.setAnimatingAway(fragment.mView);
endViewTransitionAnimation.setAnimationListener(new Animation.AnimationListener() { // from class: androidx.fragment.app.FragmentAnim.2
@Override // android.view.animation.Animation.AnimationListener
public void onAnimationRepeat(Animation animation) {
}
@Override // android.view.animation.Animation.AnimationListener
public void onAnimationStart(Animation animation) {
}
@Override // android.view.animation.Animation.AnimationListener
public void onAnimationEnd(Animation animation) {
viewGroup.post(new Runnable() { // from class: androidx.fragment.app.FragmentAnim.2.1
@Override // java.lang.Runnable
public void run() {
if (fragment.getAnimatingAway() != null) {
fragment.setAnimatingAway(null);
callback.onComplete(fragment, cancellationSignal);
}
}
});
}
});
fragment.mView.startAnimation(endViewTransitionAnimation);
return;
}
Animator animator = animationOrAnimator.animator;
fragment.setAnimator(animationOrAnimator.animator);
animator.addListener(new AnimatorListenerAdapter() { // from class: androidx.fragment.app.FragmentAnim.3
@Override // android.animation.AnimatorListenerAdapter, android.animation.Animator.AnimatorListener
public void onAnimationEnd(Animator animator2) {
viewGroup.endViewTransition(view);
Animator animator3 = fragment.getAnimator();
fragment.setAnimator(null);
if (animator3 == null || viewGroup.indexOfChild(view) >= 0) {
return;
}
callback.onComplete(fragment, cancellationSignal);
}
});
animator.setTarget(fragment.mView);
animator.start();
}
private static int transitToAnimResourceId(int i, boolean z) {
if (i == 4097) {
return z ? R.animator.fragment_open_enter : R.animator.fragment_open_exit;
}
if (i == 4099) {
return z ? R.animator.fragment_fade_enter : R.animator.fragment_fade_exit;
}
if (i != 8194) {
return -1;
}
return z ? R.animator.fragment_close_enter : R.animator.fragment_close_exit;
}
static class AnimationOrAnimator {
public final Animation animation;
public final Animator animator;
AnimationOrAnimator(Animation animation) {
this.animation = animation;
this.animator = null;
if (animation == null) {
throw new IllegalStateException("Animation cannot be null");
}
}
AnimationOrAnimator(Animator animator) {
this.animation = null;
this.animator = animator;
if (animator == null) {
throw new IllegalStateException("Animator cannot be null");
}
}
}
static class EndViewTransitionAnimation extends AnimationSet implements Runnable {
private boolean mAnimating;
private final View mChild;
private boolean mEnded;
private final ViewGroup mParent;
private boolean mTransitionEnded;
EndViewTransitionAnimation(Animation animation, ViewGroup viewGroup, View view) {
super(false);
this.mAnimating = true;
this.mParent = viewGroup;
this.mChild = view;
addAnimation(animation);
viewGroup.post(this);
}
@Override // android.view.animation.AnimationSet, android.view.animation.Animation
public boolean getTransformation(long j, Transformation transformation) {
this.mAnimating = true;
if (this.mEnded) {
return !this.mTransitionEnded;
}
if (!super.getTransformation(j, transformation)) {
this.mEnded = true;
OneShotPreDrawListener.add(this.mParent, this);
}
return true;
}
@Override // android.view.animation.Animation
public boolean getTransformation(long j, Transformation transformation, float f) {
this.mAnimating = true;
if (this.mEnded) {
return !this.mTransitionEnded;
}
if (!super.getTransformation(j, transformation, f)) {
this.mEnded = true;
OneShotPreDrawListener.add(this.mParent, this);
}
return true;
}
@Override // java.lang.Runnable
public void run() {
if (!this.mEnded && this.mAnimating) {
this.mAnimating = false;
this.mParent.post(this);
} else {
this.mParent.endViewTransition(this.mChild);
this.mTransitionEnded = true;
}
}
}
}

View File

@ -0,0 +1,17 @@
package androidx.fragment.app;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
/* loaded from: classes.dex */
public abstract class FragmentContainer {
public abstract View onFindViewById(int i);
public abstract boolean onHasView();
@Deprecated
public Fragment instantiate(Context context, String str, Bundle bundle) {
return Fragment.instantiate(context, str, bundle);
}
}

View File

@ -0,0 +1,239 @@
package androidx.fragment.app;
import android.animation.LayoutTransition;
import android.content.Context;
import android.content.res.TypedArray;
import android.graphics.Canvas;
import android.os.Bundle;
import android.util.AttributeSet;
import android.view.View;
import android.view.ViewGroup;
import android.view.WindowInsets;
import android.widget.FrameLayout;
import androidx.core.view.ViewCompat;
import androidx.core.view.WindowInsetsCompat;
import androidx.fragment.R;
import java.util.ArrayList;
/* loaded from: classes.dex */
public final class FragmentContainerView extends FrameLayout {
private View.OnApplyWindowInsetsListener mApplyWindowInsetsListener;
private ArrayList<View> mDisappearingFragmentChildren;
private boolean mDrawDisappearingViewsFirst;
private ArrayList<View> mTransitioningFragmentViews;
@Override // android.view.View
public WindowInsets onApplyWindowInsets(WindowInsets windowInsets) {
return windowInsets;
}
void setDrawDisappearingViewsLast(boolean z) {
this.mDrawDisappearingViewsFirst = z;
}
@Override // android.view.View
public void setOnApplyWindowInsetsListener(View.OnApplyWindowInsetsListener onApplyWindowInsetsListener) {
this.mApplyWindowInsetsListener = onApplyWindowInsetsListener;
}
public FragmentContainerView(Context context) {
super(context);
this.mDrawDisappearingViewsFirst = true;
}
public FragmentContainerView(Context context, AttributeSet attributeSet) {
this(context, attributeSet, 0);
}
public FragmentContainerView(Context context, AttributeSet attributeSet, int i) {
super(context, attributeSet, i);
String str;
this.mDrawDisappearingViewsFirst = true;
if (attributeSet != null) {
String classAttribute = attributeSet.getClassAttribute();
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, R.styleable.FragmentContainerView);
if (classAttribute == null) {
classAttribute = obtainStyledAttributes.getString(R.styleable.FragmentContainerView_android_name);
str = "android:name";
} else {
str = "class";
}
obtainStyledAttributes.recycle();
if (classAttribute == null || isInEditMode()) {
return;
}
throw new UnsupportedOperationException("FragmentContainerView must be within a FragmentActivity to use " + str + "=\"" + classAttribute + "\"");
}
}
FragmentContainerView(Context context, AttributeSet attributeSet, FragmentManager fragmentManager) {
super(context, attributeSet);
String str;
this.mDrawDisappearingViewsFirst = true;
String classAttribute = attributeSet.getClassAttribute();
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, R.styleable.FragmentContainerView);
classAttribute = classAttribute == null ? obtainStyledAttributes.getString(R.styleable.FragmentContainerView_android_name) : classAttribute;
String string = obtainStyledAttributes.getString(R.styleable.FragmentContainerView_android_tag);
obtainStyledAttributes.recycle();
int id = getId();
Fragment findFragmentById = fragmentManager.findFragmentById(id);
if (classAttribute != null && findFragmentById == null) {
if (id <= 0) {
if (string != null) {
str = " with tag " + string;
} else {
str = "";
}
throw new IllegalStateException("FragmentContainerView must have an android:id to add Fragment " + classAttribute + str);
}
Fragment instantiate = fragmentManager.getFragmentFactory().instantiate(context.getClassLoader(), classAttribute);
instantiate.onInflate(context, attributeSet, (Bundle) null);
fragmentManager.beginTransaction().setReorderingAllowed(true).add(this, instantiate, string).commitNowAllowingStateLoss();
}
fragmentManager.onContainerAvailable(this);
}
@Override // android.view.ViewGroup
public void setLayoutTransition(LayoutTransition layoutTransition) {
throw new UnsupportedOperationException("FragmentContainerView does not support Layout Transitions or animateLayoutChanges=\"true\".");
}
@Override // android.view.ViewGroup, android.view.View
public WindowInsets dispatchApplyWindowInsets(WindowInsets windowInsets) {
WindowInsetsCompat onApplyWindowInsets;
WindowInsetsCompat windowInsetsCompat = WindowInsetsCompat.toWindowInsetsCompat(windowInsets);
View.OnApplyWindowInsetsListener onApplyWindowInsetsListener = this.mApplyWindowInsetsListener;
if (onApplyWindowInsetsListener != null) {
onApplyWindowInsets = WindowInsetsCompat.toWindowInsetsCompat(onApplyWindowInsetsListener.onApplyWindowInsets(this, windowInsets));
} else {
onApplyWindowInsets = ViewCompat.onApplyWindowInsets(this, windowInsetsCompat);
}
if (!onApplyWindowInsets.isConsumed()) {
int childCount = getChildCount();
for (int i = 0; i < childCount; i++) {
ViewCompat.dispatchApplyWindowInsets(getChildAt(i), onApplyWindowInsets);
}
}
return windowInsets;
}
@Override // android.view.ViewGroup, android.view.View
protected void dispatchDraw(Canvas canvas) {
if (this.mDrawDisappearingViewsFirst && this.mDisappearingFragmentChildren != null) {
for (int i = 0; i < this.mDisappearingFragmentChildren.size(); i++) {
super.drawChild(canvas, this.mDisappearingFragmentChildren.get(i), getDrawingTime());
}
}
super.dispatchDraw(canvas);
}
@Override // android.view.ViewGroup
protected boolean drawChild(Canvas canvas, View view, long j) {
ArrayList<View> arrayList;
if (!this.mDrawDisappearingViewsFirst || (arrayList = this.mDisappearingFragmentChildren) == null || arrayList.size() <= 0 || !this.mDisappearingFragmentChildren.contains(view)) {
return super.drawChild(canvas, view, j);
}
return false;
}
@Override // android.view.ViewGroup
public void startViewTransition(View view) {
if (view.getParent() == this) {
if (this.mTransitioningFragmentViews == null) {
this.mTransitioningFragmentViews = new ArrayList<>();
}
this.mTransitioningFragmentViews.add(view);
}
super.startViewTransition(view);
}
@Override // android.view.ViewGroup
public void endViewTransition(View view) {
ArrayList<View> arrayList = this.mTransitioningFragmentViews;
if (arrayList != null) {
arrayList.remove(view);
ArrayList<View> arrayList2 = this.mDisappearingFragmentChildren;
if (arrayList2 != null && arrayList2.remove(view)) {
this.mDrawDisappearingViewsFirst = true;
}
}
super.endViewTransition(view);
}
@Override // android.view.ViewGroup
public void addView(View view, int i, ViewGroup.LayoutParams layoutParams) {
if (FragmentManager.getViewFragment(view) == null) {
throw new IllegalStateException("Views added to a FragmentContainerView must be associated with a Fragment. View " + view + " is not associated with a Fragment.");
}
super.addView(view, i, layoutParams);
}
@Override // android.view.ViewGroup
protected boolean addViewInLayout(View view, int i, ViewGroup.LayoutParams layoutParams, boolean z) {
if (FragmentManager.getViewFragment(view) == null) {
throw new IllegalStateException("Views added to a FragmentContainerView must be associated with a Fragment. View " + view + " is not associated with a Fragment.");
}
return super.addViewInLayout(view, i, layoutParams, z);
}
@Override // android.view.ViewGroup
public void removeViewAt(int i) {
addDisappearingFragmentView(getChildAt(i));
super.removeViewAt(i);
}
@Override // android.view.ViewGroup
public void removeViewInLayout(View view) {
addDisappearingFragmentView(view);
super.removeViewInLayout(view);
}
@Override // android.view.ViewGroup, android.view.ViewManager
public void removeView(View view) {
addDisappearingFragmentView(view);
super.removeView(view);
}
@Override // android.view.ViewGroup
public void removeViews(int i, int i2) {
for (int i3 = i; i3 < i + i2; i3++) {
addDisappearingFragmentView(getChildAt(i3));
}
super.removeViews(i, i2);
}
@Override // android.view.ViewGroup
public void removeViewsInLayout(int i, int i2) {
for (int i3 = i; i3 < i + i2; i3++) {
addDisappearingFragmentView(getChildAt(i3));
}
super.removeViewsInLayout(i, i2);
}
@Override // android.view.ViewGroup
public void removeAllViewsInLayout() {
for (int childCount = getChildCount() - 1; childCount >= 0; childCount--) {
addDisappearingFragmentView(getChildAt(childCount));
}
super.removeAllViewsInLayout();
}
@Override // android.view.ViewGroup
protected void removeDetachedView(View view, boolean z) {
if (z) {
addDisappearingFragmentView(view);
}
super.removeDetachedView(view, z);
}
private void addDisappearingFragmentView(View view) {
ArrayList<View> arrayList = this.mTransitioningFragmentViews;
if (arrayList == null || !arrayList.contains(view)) {
return;
}
if (this.mDisappearingFragmentChildren == null) {
this.mDisappearingFragmentChildren = new ArrayList<>();
}
this.mDisappearingFragmentChildren.add(view);
}
}

View File

@ -0,0 +1,211 @@
package androidx.fragment.app;
import android.content.Context;
import android.content.res.Configuration;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.Menu;
import android.view.MenuInflater;
import android.view.MenuItem;
import android.view.View;
import androidx.collection.SimpleArrayMap;
import androidx.core.util.Preconditions;
import androidx.lifecycle.ViewModelStoreOwner;
import androidx.loader.app.LoaderManager;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.List;
/* loaded from: classes.dex */
public class FragmentController {
private final FragmentHostCallback<?> mHost;
@Deprecated
public void dispatchReallyStop() {
}
@Deprecated
public void doLoaderDestroy() {
}
@Deprecated
public void doLoaderRetain() {
}
@Deprecated
public void doLoaderStart() {
}
@Deprecated
public void doLoaderStop(boolean z) {
}
@Deprecated
public void dumpLoaders(String str, FileDescriptor fileDescriptor, PrintWriter printWriter, String[] strArr) {
}
@Deprecated
public void reportLoaderStart() {
}
@Deprecated
public void restoreLoaderNonConfig(SimpleArrayMap<String, LoaderManager> simpleArrayMap) {
}
@Deprecated
public SimpleArrayMap<String, LoaderManager> retainLoaderNonConfig() {
return null;
}
public static FragmentController createController(FragmentHostCallback<?> fragmentHostCallback) {
return new FragmentController((FragmentHostCallback) Preconditions.checkNotNull(fragmentHostCallback, "callbacks == null"));
}
private FragmentController(FragmentHostCallback<?> fragmentHostCallback) {
this.mHost = fragmentHostCallback;
}
public FragmentManager getSupportFragmentManager() {
return this.mHost.mFragmentManager;
}
@Deprecated
public LoaderManager getSupportLoaderManager() {
throw new UnsupportedOperationException("Loaders are managed separately from FragmentController, use LoaderManager.getInstance() to obtain a LoaderManager.");
}
public Fragment findFragmentByWho(String str) {
return this.mHost.mFragmentManager.findFragmentByWho(str);
}
public int getActiveFragmentsCount() {
return this.mHost.mFragmentManager.getActiveFragmentCount();
}
public List<Fragment> getActiveFragments(List<Fragment> list) {
return this.mHost.mFragmentManager.getActiveFragments();
}
public void attachHost(Fragment fragment) {
FragmentManager fragmentManager = this.mHost.mFragmentManager;
FragmentHostCallback<?> fragmentHostCallback = this.mHost;
fragmentManager.attachController(fragmentHostCallback, fragmentHostCallback, fragment);
}
public View onCreateView(View view, String str, Context context, AttributeSet attributeSet) {
return this.mHost.mFragmentManager.getLayoutInflaterFactory().onCreateView(view, str, context, attributeSet);
}
public void noteStateNotSaved() {
this.mHost.mFragmentManager.noteStateNotSaved();
}
public Parcelable saveAllState() {
return this.mHost.mFragmentManager.saveAllState();
}
@Deprecated
public void restoreAllState(Parcelable parcelable, List<Fragment> list) {
this.mHost.mFragmentManager.restoreAllState(parcelable, new FragmentManagerNonConfig(list, null, null));
}
@Deprecated
public void restoreAllState(Parcelable parcelable, FragmentManagerNonConfig fragmentManagerNonConfig) {
this.mHost.mFragmentManager.restoreAllState(parcelable, fragmentManagerNonConfig);
}
public void restoreSaveState(Parcelable parcelable) {
FragmentHostCallback<?> fragmentHostCallback = this.mHost;
if (!(fragmentHostCallback instanceof ViewModelStoreOwner)) {
throw new IllegalStateException("Your FragmentHostCallback must implement ViewModelStoreOwner to call restoreSaveState(). Call restoreAllState() if you're still using retainNestedNonConfig().");
}
fragmentHostCallback.mFragmentManager.restoreSaveState(parcelable);
}
@Deprecated
public List<Fragment> retainNonConfig() {
FragmentManagerNonConfig retainNonConfig = this.mHost.mFragmentManager.retainNonConfig();
if (retainNonConfig == null || retainNonConfig.getFragments() == null) {
return null;
}
return new ArrayList(retainNonConfig.getFragments());
}
@Deprecated
public FragmentManagerNonConfig retainNestedNonConfig() {
return this.mHost.mFragmentManager.retainNonConfig();
}
public void dispatchCreate() {
this.mHost.mFragmentManager.dispatchCreate();
}
public void dispatchActivityCreated() {
this.mHost.mFragmentManager.dispatchActivityCreated();
}
public void dispatchStart() {
this.mHost.mFragmentManager.dispatchStart();
}
public void dispatchResume() {
this.mHost.mFragmentManager.dispatchResume();
}
public void dispatchPause() {
this.mHost.mFragmentManager.dispatchPause();
}
public void dispatchStop() {
this.mHost.mFragmentManager.dispatchStop();
}
public void dispatchDestroyView() {
this.mHost.mFragmentManager.dispatchDestroyView();
}
public void dispatchDestroy() {
this.mHost.mFragmentManager.dispatchDestroy();
}
public void dispatchMultiWindowModeChanged(boolean z) {
this.mHost.mFragmentManager.dispatchMultiWindowModeChanged(z);
}
public void dispatchPictureInPictureModeChanged(boolean z) {
this.mHost.mFragmentManager.dispatchPictureInPictureModeChanged(z);
}
public void dispatchConfigurationChanged(Configuration configuration) {
this.mHost.mFragmentManager.dispatchConfigurationChanged(configuration);
}
public void dispatchLowMemory() {
this.mHost.mFragmentManager.dispatchLowMemory();
}
public boolean dispatchCreateOptionsMenu(Menu menu, MenuInflater menuInflater) {
return this.mHost.mFragmentManager.dispatchCreateOptionsMenu(menu, menuInflater);
}
public boolean dispatchPrepareOptionsMenu(Menu menu) {
return this.mHost.mFragmentManager.dispatchPrepareOptionsMenu(menu);
}
public boolean dispatchOptionsItemSelected(MenuItem menuItem) {
return this.mHost.mFragmentManager.dispatchOptionsItemSelected(menuItem);
}
public boolean dispatchContextItemSelected(MenuItem menuItem) {
return this.mHost.mFragmentManager.dispatchContextItemSelected(menuItem);
}
public void dispatchOptionsMenuClosed(Menu menu) {
this.mHost.mFragmentManager.dispatchOptionsMenuClosed(menu);
}
public boolean execPendingActions() {
return this.mHost.mFragmentManager.execPendingActions(true);
}
}

View File

@ -0,0 +1,58 @@
package androidx.fragment.app;
import androidx.collection.SimpleArrayMap;
import androidx.fragment.app.Fragment;
import java.lang.reflect.InvocationTargetException;
/* loaded from: classes.dex */
public class FragmentFactory {
private static final SimpleArrayMap<ClassLoader, SimpleArrayMap<String, Class<?>>> sClassCacheMap = new SimpleArrayMap<>();
private static Class<?> loadClass(ClassLoader classLoader, String str) throws ClassNotFoundException {
SimpleArrayMap<ClassLoader, SimpleArrayMap<String, Class<?>>> simpleArrayMap = sClassCacheMap;
SimpleArrayMap<String, Class<?>> simpleArrayMap2 = simpleArrayMap.get(classLoader);
if (simpleArrayMap2 == null) {
simpleArrayMap2 = new SimpleArrayMap<>();
simpleArrayMap.put(classLoader, simpleArrayMap2);
}
Class<?> cls = simpleArrayMap2.get(str);
if (cls != null) {
return cls;
}
Class<?> cls2 = Class.forName(str, false, classLoader);
simpleArrayMap2.put(str, cls2);
return cls2;
}
static boolean isFragmentClass(ClassLoader classLoader, String str) {
try {
return Fragment.class.isAssignableFrom(loadClass(classLoader, str));
} catch (ClassNotFoundException unused) {
return false;
}
}
public static Class<? extends Fragment> loadFragmentClass(ClassLoader classLoader, String str) {
try {
return loadClass(classLoader, str);
} catch (ClassCastException e) {
throw new Fragment.InstantiationException("Unable to instantiate fragment " + str + ": make sure class is a valid subclass of Fragment", e);
} catch (ClassNotFoundException e2) {
throw new Fragment.InstantiationException("Unable to instantiate fragment " + str + ": make sure class name exists", e2);
}
}
public Fragment instantiate(ClassLoader classLoader, String str) {
try {
return loadFragmentClass(classLoader, str).getConstructor(new Class[0]).newInstance(new Object[0]);
} catch (IllegalAccessException e) {
throw new Fragment.InstantiationException("Unable to instantiate fragment " + str + ": make sure class name exists, is public, and has an empty constructor that is public", e);
} catch (InstantiationException e2) {
throw new Fragment.InstantiationException("Unable to instantiate fragment " + str + ": make sure class name exists, is public, and has an empty constructor that is public", e2);
} catch (NoSuchMethodException e3) {
throw new Fragment.InstantiationException("Unable to instantiate fragment " + str + ": could not find Fragment constructor", e3);
} catch (InvocationTargetException e4) {
throw new Fragment.InstantiationException("Unable to instantiate fragment " + str + ": calling Fragment constructor caused an exception", e4);
}
}
}

View File

@ -0,0 +1,113 @@
package androidx.fragment.app;
import android.app.Activity;
import android.content.Context;
import android.content.Intent;
import android.content.IntentSender;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import androidx.core.app.ActivityCompat;
import androidx.core.content.ContextCompat;
import androidx.core.util.Preconditions;
import java.io.FileDescriptor;
import java.io.PrintWriter;
/* loaded from: classes.dex */
public abstract class FragmentHostCallback<E> extends FragmentContainer {
private final Activity mActivity;
private final Context mContext;
final FragmentManager mFragmentManager;
private final Handler mHandler;
private final int mWindowAnimations;
Activity getActivity() {
return this.mActivity;
}
Context getContext() {
return this.mContext;
}
Handler getHandler() {
return this.mHandler;
}
public void onDump(String str, FileDescriptor fileDescriptor, PrintWriter printWriter, String[] strArr) {
}
@Override // androidx.fragment.app.FragmentContainer
public View onFindViewById(int i) {
return null;
}
public abstract E onGetHost();
public int onGetWindowAnimations() {
return this.mWindowAnimations;
}
@Override // androidx.fragment.app.FragmentContainer
public boolean onHasView() {
return true;
}
public boolean onHasWindowAnimations() {
return true;
}
@Deprecated
public void onRequestPermissionsFromFragment(Fragment fragment, String[] strArr, int i) {
}
public boolean onShouldSaveFragmentState(Fragment fragment) {
return true;
}
public boolean onShouldShowRequestPermissionRationale(String str) {
return false;
}
public void onSupportInvalidateOptionsMenu() {
}
public FragmentHostCallback(Context context, Handler handler, int i) {
this(context instanceof Activity ? (Activity) context : null, context, handler, i);
}
FragmentHostCallback(FragmentActivity fragmentActivity) {
this(fragmentActivity, fragmentActivity, new Handler(), 0);
}
FragmentHostCallback(Activity activity, Context context, Handler handler, int i) {
this.mFragmentManager = new FragmentManagerImpl();
this.mActivity = activity;
this.mContext = (Context) Preconditions.checkNotNull(context, "context == null");
this.mHandler = (Handler) Preconditions.checkNotNull(handler, "handler == null");
this.mWindowAnimations = i;
}
public LayoutInflater onGetLayoutInflater() {
return LayoutInflater.from(this.mContext);
}
public void onStartActivityFromFragment(Fragment fragment, Intent intent, int i) {
onStartActivityFromFragment(fragment, intent, i, null);
}
public void onStartActivityFromFragment(Fragment fragment, Intent intent, int i, Bundle bundle) {
if (i != -1) {
throw new IllegalStateException("Starting activity with a requestCode requires a FragmentActivity host");
}
ContextCompat.startActivity(this.mContext, intent, bundle);
}
@Deprecated
public void onStartIntentSenderFromFragment(Fragment fragment, IntentSender intentSender, int i, Intent intent, int i2, int i3, int i4, Bundle bundle) throws IntentSender.SendIntentException {
if (i != -1) {
throw new IllegalStateException("Starting intent sender with a requestCode requires a FragmentActivity host");
}
ActivityCompat.startIntentSenderForResult(this.mActivity, intentSender, i, intent, i2, i3, i4, bundle);
}
}

View File

@ -0,0 +1,110 @@
package androidx.fragment.app;
import android.content.Context;
import android.content.res.TypedArray;
import android.util.AttributeSet;
import android.util.Log;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.R;
/* loaded from: classes.dex */
class FragmentLayoutInflaterFactory implements LayoutInflater.Factory2 {
private static final String TAG = "FragmentManager";
final FragmentManager mFragmentManager;
FragmentLayoutInflaterFactory(FragmentManager fragmentManager) {
this.mFragmentManager = fragmentManager;
}
@Override // android.view.LayoutInflater.Factory
public View onCreateView(String str, Context context, AttributeSet attributeSet) {
return onCreateView(null, str, context, attributeSet);
}
@Override // android.view.LayoutInflater.Factory2
public View onCreateView(View view, String str, Context context, AttributeSet attributeSet) {
final FragmentStateManager createOrGetFragmentStateManager;
if (FragmentContainerView.class.getName().equals(str)) {
return new FragmentContainerView(context, attributeSet, this.mFragmentManager);
}
if (!"fragment".equals(str)) {
return null;
}
String attributeValue = attributeSet.getAttributeValue(null, "class");
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, R.styleable.Fragment);
if (attributeValue == null) {
attributeValue = obtainStyledAttributes.getString(R.styleable.Fragment_android_name);
}
int resourceId = obtainStyledAttributes.getResourceId(R.styleable.Fragment_android_id, -1);
String string = obtainStyledAttributes.getString(R.styleable.Fragment_android_tag);
obtainStyledAttributes.recycle();
if (attributeValue == null || !FragmentFactory.isFragmentClass(context.getClassLoader(), attributeValue)) {
return null;
}
int id = view != null ? view.getId() : 0;
if (id == -1 && resourceId == -1 && string == null) {
throw new IllegalArgumentException(attributeSet.getPositionDescription() + ": Must specify unique android:id, android:tag, or have a parent with an id for " + attributeValue);
}
Fragment findFragmentById = resourceId != -1 ? this.mFragmentManager.findFragmentById(resourceId) : null;
if (findFragmentById == null && string != null) {
findFragmentById = this.mFragmentManager.findFragmentByTag(string);
}
if (findFragmentById == null && id != -1) {
findFragmentById = this.mFragmentManager.findFragmentById(id);
}
if (findFragmentById == null) {
findFragmentById = this.mFragmentManager.getFragmentFactory().instantiate(context.getClassLoader(), attributeValue);
findFragmentById.mFromLayout = true;
findFragmentById.mFragmentId = resourceId != 0 ? resourceId : id;
findFragmentById.mContainerId = id;
findFragmentById.mTag = string;
findFragmentById.mInLayout = true;
findFragmentById.mFragmentManager = this.mFragmentManager;
findFragmentById.mHost = this.mFragmentManager.getHost();
findFragmentById.onInflate(this.mFragmentManager.getHost().getContext(), attributeSet, findFragmentById.mSavedFragmentState);
createOrGetFragmentStateManager = this.mFragmentManager.addFragment(findFragmentById);
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Fragment " + findFragmentById + " has been inflated via the <fragment> tag: id=0x" + Integer.toHexString(resourceId));
}
} else {
if (findFragmentById.mInLayout) {
throw new IllegalArgumentException(attributeSet.getPositionDescription() + ": Duplicate id 0x" + Integer.toHexString(resourceId) + ", tag " + string + ", or parent id 0x" + Integer.toHexString(id) + " with another fragment for " + attributeValue);
}
findFragmentById.mInLayout = true;
findFragmentById.mFragmentManager = this.mFragmentManager;
findFragmentById.mHost = this.mFragmentManager.getHost();
findFragmentById.onInflate(this.mFragmentManager.getHost().getContext(), attributeSet, findFragmentById.mSavedFragmentState);
createOrGetFragmentStateManager = this.mFragmentManager.createOrGetFragmentStateManager(findFragmentById);
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Retained Fragment " + findFragmentById + " has been re-attached via the <fragment> tag: id=0x" + Integer.toHexString(resourceId));
}
}
findFragmentById.mContainer = (ViewGroup) view;
createOrGetFragmentStateManager.moveToExpectedState();
createOrGetFragmentStateManager.ensureInflatedView();
if (findFragmentById.mView == null) {
throw new IllegalStateException("Fragment " + attributeValue + " did not create a view.");
}
if (resourceId != 0) {
findFragmentById.mView.setId(resourceId);
}
if (findFragmentById.mView.getTag() == null) {
findFragmentById.mView.setTag(string);
}
findFragmentById.mView.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { // from class: androidx.fragment.app.FragmentLayoutInflaterFactory.1
@Override // android.view.View.OnAttachStateChangeListener
public void onViewDetachedFromWindow(View view2) {
}
@Override // android.view.View.OnAttachStateChangeListener
public void onViewAttachedToWindow(View view2) {
Fragment fragment = createOrGetFragmentStateManager.getFragment();
createOrGetFragmentStateManager.moveToExpectedState();
SpecialEffectsController.getOrCreateController((ViewGroup) fragment.mView.getParent(), FragmentLayoutInflaterFactory.this.mFragmentManager).forceCompleteAllOperations();
}
});
return findFragmentById.mView;
}
}

View File

@ -0,0 +1,247 @@
package androidx.fragment.app;
import android.content.Context;
import android.os.Bundle;
import android.view.View;
import androidx.fragment.app.FragmentManager;
import java.util.Iterator;
import java.util.concurrent.CopyOnWriteArrayList;
/* loaded from: classes.dex */
class FragmentLifecycleCallbacksDispatcher {
private final FragmentManager mFragmentManager;
private final CopyOnWriteArrayList<FragmentLifecycleCallbacksHolder> mLifecycleCallbacks = new CopyOnWriteArrayList<>();
private static final class FragmentLifecycleCallbacksHolder {
final FragmentManager.FragmentLifecycleCallbacks mCallback;
final boolean mRecursive;
FragmentLifecycleCallbacksHolder(FragmentManager.FragmentLifecycleCallbacks fragmentLifecycleCallbacks, boolean z) {
this.mCallback = fragmentLifecycleCallbacks;
this.mRecursive = z;
}
}
FragmentLifecycleCallbacksDispatcher(FragmentManager fragmentManager) {
this.mFragmentManager = fragmentManager;
}
public void registerFragmentLifecycleCallbacks(FragmentManager.FragmentLifecycleCallbacks fragmentLifecycleCallbacks, boolean z) {
this.mLifecycleCallbacks.add(new FragmentLifecycleCallbacksHolder(fragmentLifecycleCallbacks, z));
}
public void unregisterFragmentLifecycleCallbacks(FragmentManager.FragmentLifecycleCallbacks fragmentLifecycleCallbacks) {
synchronized (this.mLifecycleCallbacks) {
int size = this.mLifecycleCallbacks.size();
int i = 0;
while (true) {
if (i >= size) {
break;
}
if (this.mLifecycleCallbacks.get(i).mCallback == fragmentLifecycleCallbacks) {
this.mLifecycleCallbacks.remove(i);
break;
}
i++;
}
}
}
void dispatchOnFragmentPreAttached(Fragment fragment, boolean z) {
Context context = this.mFragmentManager.getHost().getContext();
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentPreAttached(fragment, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentPreAttached(this.mFragmentManager, fragment, context);
}
}
}
void dispatchOnFragmentAttached(Fragment fragment, boolean z) {
Context context = this.mFragmentManager.getHost().getContext();
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentAttached(fragment, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentAttached(this.mFragmentManager, fragment, context);
}
}
}
void dispatchOnFragmentPreCreated(Fragment fragment, Bundle bundle, boolean z) {
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentPreCreated(fragment, bundle, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentPreCreated(this.mFragmentManager, fragment, bundle);
}
}
}
void dispatchOnFragmentCreated(Fragment fragment, Bundle bundle, boolean z) {
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentCreated(fragment, bundle, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentCreated(this.mFragmentManager, fragment, bundle);
}
}
}
void dispatchOnFragmentActivityCreated(Fragment fragment, Bundle bundle, boolean z) {
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentActivityCreated(fragment, bundle, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentActivityCreated(this.mFragmentManager, fragment, bundle);
}
}
}
void dispatchOnFragmentViewCreated(Fragment fragment, View view, Bundle bundle, boolean z) {
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentViewCreated(fragment, view, bundle, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentViewCreated(this.mFragmentManager, fragment, view, bundle);
}
}
}
void dispatchOnFragmentStarted(Fragment fragment, boolean z) {
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentStarted(fragment, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentStarted(this.mFragmentManager, fragment);
}
}
}
void dispatchOnFragmentResumed(Fragment fragment, boolean z) {
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentResumed(fragment, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentResumed(this.mFragmentManager, fragment);
}
}
}
void dispatchOnFragmentPaused(Fragment fragment, boolean z) {
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentPaused(fragment, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentPaused(this.mFragmentManager, fragment);
}
}
}
void dispatchOnFragmentStopped(Fragment fragment, boolean z) {
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentStopped(fragment, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentStopped(this.mFragmentManager, fragment);
}
}
}
void dispatchOnFragmentSaveInstanceState(Fragment fragment, Bundle bundle, boolean z) {
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentSaveInstanceState(fragment, bundle, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentSaveInstanceState(this.mFragmentManager, fragment, bundle);
}
}
}
void dispatchOnFragmentViewDestroyed(Fragment fragment, boolean z) {
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentViewDestroyed(fragment, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentViewDestroyed(this.mFragmentManager, fragment);
}
}
}
void dispatchOnFragmentDestroyed(Fragment fragment, boolean z) {
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentDestroyed(fragment, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentDestroyed(this.mFragmentManager, fragment);
}
}
}
void dispatchOnFragmentDetached(Fragment fragment, boolean z) {
Fragment parent = this.mFragmentManager.getParent();
if (parent != null) {
parent.getParentFragmentManager().getLifecycleCallbacksDispatcher().dispatchOnFragmentDetached(fragment, true);
}
Iterator<FragmentLifecycleCallbacksHolder> it = this.mLifecycleCallbacks.iterator();
while (it.hasNext()) {
FragmentLifecycleCallbacksHolder next = it.next();
if (!z || next.mRecursive) {
next.mCallback.onFragmentDetached(this.mFragmentManager, fragment);
}
}
}
}

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,7 @@
package androidx.fragment.app;
/* loaded from: classes.dex */
class FragmentManagerImpl extends FragmentManager {
FragmentManagerImpl() {
}
}

View File

@ -0,0 +1,39 @@
package androidx.fragment.app;
import androidx.lifecycle.ViewModelStore;
import java.util.Collection;
import java.util.Map;
@Deprecated
/* loaded from: classes.dex */
public class FragmentManagerNonConfig {
private final Map<String, FragmentManagerNonConfig> mChildNonConfigs;
private final Collection<Fragment> mFragments;
private final Map<String, ViewModelStore> mViewModelStores;
Map<String, FragmentManagerNonConfig> getChildNonConfigs() {
return this.mChildNonConfigs;
}
Collection<Fragment> getFragments() {
return this.mFragments;
}
Map<String, ViewModelStore> getViewModelStores() {
return this.mViewModelStores;
}
FragmentManagerNonConfig(Collection<Fragment> collection, Map<String, FragmentManagerNonConfig> map, Map<String, ViewModelStore> map2) {
this.mFragments = collection;
this.mChildNonConfigs = map;
this.mViewModelStores = map2;
}
boolean isRetaining(Fragment fragment) {
Collection<Fragment> collection = this.mFragments;
if (collection == null) {
return false;
}
return collection.contains(fragment);
}
}

View File

@ -0,0 +1,69 @@
package androidx.fragment.app;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import androidx.fragment.app.FragmentManager;
import java.util.ArrayList;
/* loaded from: classes.dex */
final class FragmentManagerState implements Parcelable {
public static final Parcelable.Creator<FragmentManagerState> CREATOR = new Parcelable.Creator<FragmentManagerState>() { // from class: androidx.fragment.app.FragmentManagerState.1
/* JADX WARN: Can't rename method to resolve collision */
@Override // android.os.Parcelable.Creator
public FragmentManagerState createFromParcel(Parcel parcel) {
return new FragmentManagerState(parcel);
}
/* JADX WARN: Can't rename method to resolve collision */
@Override // android.os.Parcelable.Creator
public FragmentManagerState[] newArray(int i) {
return new FragmentManagerState[i];
}
};
ArrayList<FragmentState> mActive;
ArrayList<String> mAdded;
BackStackState[] mBackStack;
int mBackStackIndex;
ArrayList<FragmentManager.LaunchedFragmentInfo> mLaunchedFragments;
String mPrimaryNavActiveWho;
ArrayList<String> mResultKeys;
ArrayList<Bundle> mResults;
@Override // android.os.Parcelable
public int describeContents() {
return 0;
}
public FragmentManagerState() {
this.mPrimaryNavActiveWho = null;
this.mResultKeys = new ArrayList<>();
this.mResults = new ArrayList<>();
}
public FragmentManagerState(Parcel parcel) {
this.mPrimaryNavActiveWho = null;
this.mResultKeys = new ArrayList<>();
this.mResults = new ArrayList<>();
this.mActive = parcel.createTypedArrayList(FragmentState.CREATOR);
this.mAdded = parcel.createStringArrayList();
this.mBackStack = (BackStackState[]) parcel.createTypedArray(BackStackState.CREATOR);
this.mBackStackIndex = parcel.readInt();
this.mPrimaryNavActiveWho = parcel.readString();
this.mResultKeys = parcel.createStringArrayList();
this.mResults = parcel.createTypedArrayList(Bundle.CREATOR);
this.mLaunchedFragments = parcel.createTypedArrayList(FragmentManager.LaunchedFragmentInfo.CREATOR);
}
@Override // android.os.Parcelable
public void writeToParcel(Parcel parcel, int i) {
parcel.writeTypedList(this.mActive);
parcel.writeStringList(this.mAdded);
parcel.writeTypedArray(this.mBackStack, i);
parcel.writeInt(this.mBackStackIndex);
parcel.writeString(this.mPrimaryNavActiveWho);
parcel.writeStringList(this.mResultKeys);
parcel.writeTypedList(this.mResults);
parcel.writeTypedList(this.mLaunchedFragments);
}
}

View File

@ -0,0 +1,234 @@
package androidx.fragment.app;
import android.util.Log;
import androidx.lifecycle.ViewModel;
import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelStore;
import androidx.lifecycle.viewmodel.CreationExtras;
import java.util.ArrayList;
import java.util.Collection;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
/* loaded from: classes.dex */
final class FragmentManagerViewModel extends ViewModel {
private static final ViewModelProvider.Factory FACTORY = new ViewModelProvider.Factory() { // from class: androidx.fragment.app.FragmentManagerViewModel.1
@Override // androidx.lifecycle.ViewModelProvider.Factory
public /* synthetic */ ViewModel create(Class cls, CreationExtras creationExtras) {
return ViewModelProvider.Factory.CC.$default$create(this, cls, creationExtras);
}
@Override // androidx.lifecycle.ViewModelProvider.Factory
public <T extends ViewModel> T create(Class<T> cls) {
return new FragmentManagerViewModel(true);
}
};
private static final String TAG = "FragmentManager";
private final boolean mStateAutomaticallySaved;
private final HashMap<String, Fragment> mRetainedFragments = new HashMap<>();
private final HashMap<String, FragmentManagerViewModel> mChildNonConfigs = new HashMap<>();
private final HashMap<String, ViewModelStore> mViewModelStores = new HashMap<>();
private boolean mHasBeenCleared = false;
private boolean mHasSavedSnapshot = false;
private boolean mIsStateSaved = false;
boolean isCleared() {
return this.mHasBeenCleared;
}
void setIsStateSaved(boolean z) {
this.mIsStateSaved = z;
}
static FragmentManagerViewModel getInstance(ViewModelStore viewModelStore) {
return (FragmentManagerViewModel) new ViewModelProvider(viewModelStore, FACTORY).get(FragmentManagerViewModel.class);
}
FragmentManagerViewModel(boolean z) {
this.mStateAutomaticallySaved = z;
}
@Override // androidx.lifecycle.ViewModel
protected void onCleared() {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "onCleared called for " + this);
}
this.mHasBeenCleared = true;
}
void addRetainedFragment(Fragment fragment) {
if (this.mIsStateSaved) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Ignoring addRetainedFragment as the state is already saved");
}
} else {
if (this.mRetainedFragments.containsKey(fragment.mWho)) {
return;
}
this.mRetainedFragments.put(fragment.mWho, fragment);
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Updating retained Fragments: Added " + fragment);
}
}
}
Fragment findRetainedFragmentByWho(String str) {
return this.mRetainedFragments.get(str);
}
Collection<Fragment> getRetainedFragments() {
return new ArrayList(this.mRetainedFragments.values());
}
boolean shouldDestroy(Fragment fragment) {
if (this.mRetainedFragments.containsKey(fragment.mWho)) {
return this.mStateAutomaticallySaved ? this.mHasBeenCleared : !this.mHasSavedSnapshot;
}
return true;
}
void removeRetainedFragment(Fragment fragment) {
if (this.mIsStateSaved) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Ignoring removeRetainedFragment as the state is already saved");
}
} else {
if (this.mRetainedFragments.remove(fragment.mWho) == null || !FragmentManager.isLoggingEnabled(2)) {
return;
}
Log.v(TAG, "Updating retained Fragments: Removed " + fragment);
}
}
FragmentManagerViewModel getChildNonConfig(Fragment fragment) {
FragmentManagerViewModel fragmentManagerViewModel = this.mChildNonConfigs.get(fragment.mWho);
if (fragmentManagerViewModel != null) {
return fragmentManagerViewModel;
}
FragmentManagerViewModel fragmentManagerViewModel2 = new FragmentManagerViewModel(this.mStateAutomaticallySaved);
this.mChildNonConfigs.put(fragment.mWho, fragmentManagerViewModel2);
return fragmentManagerViewModel2;
}
ViewModelStore getViewModelStore(Fragment fragment) {
ViewModelStore viewModelStore = this.mViewModelStores.get(fragment.mWho);
if (viewModelStore != null) {
return viewModelStore;
}
ViewModelStore viewModelStore2 = new ViewModelStore();
this.mViewModelStores.put(fragment.mWho, viewModelStore2);
return viewModelStore2;
}
void clearNonConfigState(Fragment fragment) {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "Clearing non-config state for " + fragment);
}
FragmentManagerViewModel fragmentManagerViewModel = this.mChildNonConfigs.get(fragment.mWho);
if (fragmentManagerViewModel != null) {
fragmentManagerViewModel.onCleared();
this.mChildNonConfigs.remove(fragment.mWho);
}
ViewModelStore viewModelStore = this.mViewModelStores.get(fragment.mWho);
if (viewModelStore != null) {
viewModelStore.clear();
this.mViewModelStores.remove(fragment.mWho);
}
}
@Deprecated
void restoreFromSnapshot(FragmentManagerNonConfig fragmentManagerNonConfig) {
this.mRetainedFragments.clear();
this.mChildNonConfigs.clear();
this.mViewModelStores.clear();
if (fragmentManagerNonConfig != null) {
Collection<Fragment> fragments = fragmentManagerNonConfig.getFragments();
if (fragments != null) {
for (Fragment fragment : fragments) {
if (fragment != null) {
this.mRetainedFragments.put(fragment.mWho, fragment);
}
}
}
Map<String, FragmentManagerNonConfig> childNonConfigs = fragmentManagerNonConfig.getChildNonConfigs();
if (childNonConfigs != null) {
for (Map.Entry<String, FragmentManagerNonConfig> entry : childNonConfigs.entrySet()) {
FragmentManagerViewModel fragmentManagerViewModel = new FragmentManagerViewModel(this.mStateAutomaticallySaved);
fragmentManagerViewModel.restoreFromSnapshot(entry.getValue());
this.mChildNonConfigs.put(entry.getKey(), fragmentManagerViewModel);
}
}
Map<String, ViewModelStore> viewModelStores = fragmentManagerNonConfig.getViewModelStores();
if (viewModelStores != null) {
this.mViewModelStores.putAll(viewModelStores);
}
}
this.mHasSavedSnapshot = false;
}
@Deprecated
FragmentManagerNonConfig getSnapshot() {
if (this.mRetainedFragments.isEmpty() && this.mChildNonConfigs.isEmpty() && this.mViewModelStores.isEmpty()) {
return null;
}
HashMap hashMap = new HashMap();
for (Map.Entry<String, FragmentManagerViewModel> entry : this.mChildNonConfigs.entrySet()) {
FragmentManagerNonConfig snapshot = entry.getValue().getSnapshot();
if (snapshot != null) {
hashMap.put(entry.getKey(), snapshot);
}
}
this.mHasSavedSnapshot = true;
if (this.mRetainedFragments.isEmpty() && hashMap.isEmpty() && this.mViewModelStores.isEmpty()) {
return null;
}
return new FragmentManagerNonConfig(new ArrayList(this.mRetainedFragments.values()), hashMap, new HashMap(this.mViewModelStores));
}
public boolean equals(Object obj) {
if (this == obj) {
return true;
}
if (obj == null || getClass() != obj.getClass()) {
return false;
}
FragmentManagerViewModel fragmentManagerViewModel = (FragmentManagerViewModel) obj;
return this.mRetainedFragments.equals(fragmentManagerViewModel.mRetainedFragments) && this.mChildNonConfigs.equals(fragmentManagerViewModel.mChildNonConfigs) && this.mViewModelStores.equals(fragmentManagerViewModel.mViewModelStores);
}
public int hashCode() {
return (((this.mRetainedFragments.hashCode() * 31) + this.mChildNonConfigs.hashCode()) * 31) + this.mViewModelStores.hashCode();
}
public String toString() {
StringBuilder sb = new StringBuilder("FragmentManagerViewModel{");
sb.append(Integer.toHexString(System.identityHashCode(this)));
sb.append("} Fragments (");
Iterator<Fragment> it = this.mRetainedFragments.values().iterator();
while (it.hasNext()) {
sb.append(it.next());
if (it.hasNext()) {
sb.append(", ");
}
}
sb.append(") Child Non Config (");
Iterator<String> it2 = this.mChildNonConfigs.keySet().iterator();
while (it2.hasNext()) {
sb.append(it2.next());
if (it2.hasNext()) {
sb.append(", ");
}
}
sb.append(") ViewModelStores (");
Iterator<String> it3 = this.mViewModelStores.keySet().iterator();
while (it3.hasNext()) {
sb.append(it3.next());
if (it3.hasNext()) {
sb.append(", ");
}
}
sb.append(')');
return sb.toString();
}
}

View File

@ -0,0 +1,6 @@
package androidx.fragment.app;
/* loaded from: classes.dex */
public interface FragmentOnAttachListener {
void onAttachFragment(FragmentManager fragmentManager, Fragment fragment);
}

View File

@ -0,0 +1,148 @@
package androidx.fragment.app;
import android.os.Parcelable;
import android.view.View;
import android.view.ViewGroup;
import androidx.lifecycle.Lifecycle;
import androidx.viewpager.widget.PagerAdapter;
@Deprecated
/* loaded from: classes.dex */
public abstract class FragmentPagerAdapter extends PagerAdapter {
public static final int BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT = 1;
@Deprecated
public static final int BEHAVIOR_SET_USER_VISIBLE_HINT = 0;
private static final boolean DEBUG = false;
private static final String TAG = "FragmentPagerAdapter";
private final int mBehavior;
private FragmentTransaction mCurTransaction;
private Fragment mCurrentPrimaryItem;
private boolean mExecutingFinishUpdate;
private final FragmentManager mFragmentManager;
public abstract Fragment getItem(int i);
public long getItemId(int i) {
return i;
}
@Override // androidx.viewpager.widget.PagerAdapter
public void restoreState(Parcelable parcelable, ClassLoader classLoader) {
}
@Override // androidx.viewpager.widget.PagerAdapter
public Parcelable saveState() {
return null;
}
@Deprecated
public FragmentPagerAdapter(FragmentManager fragmentManager) {
this(fragmentManager, 0);
}
public FragmentPagerAdapter(FragmentManager fragmentManager, int i) {
this.mCurTransaction = null;
this.mCurrentPrimaryItem = null;
this.mFragmentManager = fragmentManager;
this.mBehavior = i;
}
@Override // androidx.viewpager.widget.PagerAdapter
public void startUpdate(ViewGroup viewGroup) {
if (viewGroup.getId() != -1) {
return;
}
throw new IllegalStateException("ViewPager with adapter " + this + " requires a view id");
}
@Override // androidx.viewpager.widget.PagerAdapter
public Object instantiateItem(ViewGroup viewGroup, int i) {
if (this.mCurTransaction == null) {
this.mCurTransaction = this.mFragmentManager.beginTransaction();
}
long itemId = getItemId(i);
Fragment findFragmentByTag = this.mFragmentManager.findFragmentByTag(makeFragmentName(viewGroup.getId(), itemId));
if (findFragmentByTag != null) {
this.mCurTransaction.attach(findFragmentByTag);
} else {
findFragmentByTag = getItem(i);
this.mCurTransaction.add(viewGroup.getId(), findFragmentByTag, makeFragmentName(viewGroup.getId(), itemId));
}
if (findFragmentByTag != this.mCurrentPrimaryItem) {
findFragmentByTag.setMenuVisibility(false);
if (this.mBehavior == 1) {
this.mCurTransaction.setMaxLifecycle(findFragmentByTag, Lifecycle.State.STARTED);
} else {
findFragmentByTag.setUserVisibleHint(false);
}
}
return findFragmentByTag;
}
@Override // androidx.viewpager.widget.PagerAdapter
public void destroyItem(ViewGroup viewGroup, int i, Object obj) {
Fragment fragment = (Fragment) obj;
if (this.mCurTransaction == null) {
this.mCurTransaction = this.mFragmentManager.beginTransaction();
}
this.mCurTransaction.detach(fragment);
if (fragment.equals(this.mCurrentPrimaryItem)) {
this.mCurrentPrimaryItem = null;
}
}
@Override // androidx.viewpager.widget.PagerAdapter
public void setPrimaryItem(ViewGroup viewGroup, int i, Object obj) {
Fragment fragment = (Fragment) obj;
Fragment fragment2 = this.mCurrentPrimaryItem;
if (fragment != fragment2) {
if (fragment2 != null) {
fragment2.setMenuVisibility(false);
if (this.mBehavior == 1) {
if (this.mCurTransaction == null) {
this.mCurTransaction = this.mFragmentManager.beginTransaction();
}
this.mCurTransaction.setMaxLifecycle(this.mCurrentPrimaryItem, Lifecycle.State.STARTED);
} else {
this.mCurrentPrimaryItem.setUserVisibleHint(false);
}
}
fragment.setMenuVisibility(true);
if (this.mBehavior == 1) {
if (this.mCurTransaction == null) {
this.mCurTransaction = this.mFragmentManager.beginTransaction();
}
this.mCurTransaction.setMaxLifecycle(fragment, Lifecycle.State.RESUMED);
} else {
fragment.setUserVisibleHint(true);
}
this.mCurrentPrimaryItem = fragment;
}
}
@Override // androidx.viewpager.widget.PagerAdapter
public void finishUpdate(ViewGroup viewGroup) {
FragmentTransaction fragmentTransaction = this.mCurTransaction;
if (fragmentTransaction != null) {
if (!this.mExecutingFinishUpdate) {
try {
this.mExecutingFinishUpdate = true;
fragmentTransaction.commitNowAllowingStateLoss();
} finally {
this.mExecutingFinishUpdate = false;
}
}
this.mCurTransaction = null;
}
}
@Override // androidx.viewpager.widget.PagerAdapter
public boolean isViewFromObject(View view, Object obj) {
return ((Fragment) obj).getView() == view;
}
private static String makeFragmentName(int i, long j) {
return "android:switcher:" + i + ":" + j;
}
}

View File

@ -0,0 +1,8 @@
package androidx.fragment.app;
import android.os.Bundle;
/* loaded from: classes.dex */
public interface FragmentResultListener {
void onFragmentResult(String str, Bundle bundle);
}

View File

@ -0,0 +1,15 @@
package androidx.fragment.app;
import android.os.Bundle;
import androidx.lifecycle.LifecycleOwner;
/* loaded from: classes.dex */
public interface FragmentResultOwner {
void clearFragmentResult(String str);
void clearFragmentResultListener(String str);
void setFragmentResult(String str, Bundle bundle);
void setFragmentResultListener(String str, LifecycleOwner lifecycleOwner, FragmentResultListener fragmentResultListener);
}

View File

@ -0,0 +1,122 @@
package androidx.fragment.app;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
/* loaded from: classes.dex */
final class FragmentState implements Parcelable {
public static final Parcelable.Creator<FragmentState> CREATOR = new Parcelable.Creator<FragmentState>() { // from class: androidx.fragment.app.FragmentState.1
/* JADX WARN: Can't rename method to resolve collision */
@Override // android.os.Parcelable.Creator
public FragmentState createFromParcel(Parcel parcel) {
return new FragmentState(parcel);
}
/* JADX WARN: Can't rename method to resolve collision */
@Override // android.os.Parcelable.Creator
public FragmentState[] newArray(int i) {
return new FragmentState[i];
}
};
final Bundle mArguments;
final String mClassName;
final int mContainerId;
final boolean mDetached;
final int mFragmentId;
final boolean mFromLayout;
final boolean mHidden;
final int mMaxLifecycleState;
final boolean mRemoving;
final boolean mRetainInstance;
Bundle mSavedFragmentState;
final String mTag;
final String mWho;
@Override // android.os.Parcelable
public int describeContents() {
return 0;
}
FragmentState(Fragment fragment) {
this.mClassName = fragment.getClass().getName();
this.mWho = fragment.mWho;
this.mFromLayout = fragment.mFromLayout;
this.mFragmentId = fragment.mFragmentId;
this.mContainerId = fragment.mContainerId;
this.mTag = fragment.mTag;
this.mRetainInstance = fragment.mRetainInstance;
this.mRemoving = fragment.mRemoving;
this.mDetached = fragment.mDetached;
this.mArguments = fragment.mArguments;
this.mHidden = fragment.mHidden;
this.mMaxLifecycleState = fragment.mMaxState.ordinal();
}
FragmentState(Parcel parcel) {
this.mClassName = parcel.readString();
this.mWho = parcel.readString();
this.mFromLayout = parcel.readInt() != 0;
this.mFragmentId = parcel.readInt();
this.mContainerId = parcel.readInt();
this.mTag = parcel.readString();
this.mRetainInstance = parcel.readInt() != 0;
this.mRemoving = parcel.readInt() != 0;
this.mDetached = parcel.readInt() != 0;
this.mArguments = parcel.readBundle();
this.mHidden = parcel.readInt() != 0;
this.mSavedFragmentState = parcel.readBundle();
this.mMaxLifecycleState = parcel.readInt();
}
public String toString() {
StringBuilder sb = new StringBuilder(128);
sb.append("FragmentState{");
sb.append(this.mClassName);
sb.append(" (");
sb.append(this.mWho);
sb.append(")}:");
if (this.mFromLayout) {
sb.append(" fromLayout");
}
if (this.mContainerId != 0) {
sb.append(" id=0x");
sb.append(Integer.toHexString(this.mContainerId));
}
String str = this.mTag;
if (str != null && !str.isEmpty()) {
sb.append(" tag=");
sb.append(this.mTag);
}
if (this.mRetainInstance) {
sb.append(" retainInstance");
}
if (this.mRemoving) {
sb.append(" removing");
}
if (this.mDetached) {
sb.append(" detached");
}
if (this.mHidden) {
sb.append(" hidden");
}
return sb.toString();
}
@Override // android.os.Parcelable
public void writeToParcel(Parcel parcel, int i) {
parcel.writeString(this.mClassName);
parcel.writeString(this.mWho);
parcel.writeInt(this.mFromLayout ? 1 : 0);
parcel.writeInt(this.mFragmentId);
parcel.writeInt(this.mContainerId);
parcel.writeString(this.mTag);
parcel.writeInt(this.mRetainInstance ? 1 : 0);
parcel.writeInt(this.mRemoving ? 1 : 0);
parcel.writeInt(this.mDetached ? 1 : 0);
parcel.writeBundle(this.mArguments);
parcel.writeInt(this.mHidden ? 1 : 0);
parcel.writeBundle(this.mSavedFragmentState);
parcel.writeInt(this.mMaxLifecycleState);
}
}

View File

@ -0,0 +1,697 @@
package androidx.fragment.app;
import android.app.Activity;
import android.content.res.Resources;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.Log;
import android.util.SparseArray;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.ViewParent;
import androidx.core.os.EnvironmentCompat;
import androidx.core.view.ViewCompat;
import androidx.fragment.R;
import androidx.fragment.app.Fragment;
import androidx.fragment.app.SpecialEffectsController;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.ViewModelStoreOwner;
/* loaded from: classes.dex */
class FragmentStateManager {
private static final String TAG = "FragmentManager";
private static final String TARGET_REQUEST_CODE_STATE_TAG = "android:target_req_state";
private static final String TARGET_STATE_TAG = "android:target_state";
private static final String USER_VISIBLE_HINT_TAG = "android:user_visible_hint";
private static final String VIEW_REGISTRY_STATE_TAG = "android:view_registry_state";
private static final String VIEW_STATE_TAG = "android:view_state";
private final FragmentLifecycleCallbacksDispatcher mDispatcher;
private final Fragment mFragment;
private final FragmentStore mFragmentStore;
private boolean mMovingToState = false;
private int mFragmentManagerState = -1;
Fragment getFragment() {
return this.mFragment;
}
void setFragmentManagerState(int i) {
this.mFragmentManagerState = i;
}
FragmentStateManager(FragmentLifecycleCallbacksDispatcher fragmentLifecycleCallbacksDispatcher, FragmentStore fragmentStore, Fragment fragment) {
this.mDispatcher = fragmentLifecycleCallbacksDispatcher;
this.mFragmentStore = fragmentStore;
this.mFragment = fragment;
}
FragmentStateManager(FragmentLifecycleCallbacksDispatcher fragmentLifecycleCallbacksDispatcher, FragmentStore fragmentStore, ClassLoader classLoader, FragmentFactory fragmentFactory, FragmentState fragmentState) {
this.mDispatcher = fragmentLifecycleCallbacksDispatcher;
this.mFragmentStore = fragmentStore;
Fragment instantiate = fragmentFactory.instantiate(classLoader, fragmentState.mClassName);
this.mFragment = instantiate;
if (fragmentState.mArguments != null) {
fragmentState.mArguments.setClassLoader(classLoader);
}
instantiate.setArguments(fragmentState.mArguments);
instantiate.mWho = fragmentState.mWho;
instantiate.mFromLayout = fragmentState.mFromLayout;
instantiate.mRestored = true;
instantiate.mFragmentId = fragmentState.mFragmentId;
instantiate.mContainerId = fragmentState.mContainerId;
instantiate.mTag = fragmentState.mTag;
instantiate.mRetainInstance = fragmentState.mRetainInstance;
instantiate.mRemoving = fragmentState.mRemoving;
instantiate.mDetached = fragmentState.mDetached;
instantiate.mHidden = fragmentState.mHidden;
instantiate.mMaxState = Lifecycle.State.values()[fragmentState.mMaxLifecycleState];
if (fragmentState.mSavedFragmentState != null) {
instantiate.mSavedFragmentState = fragmentState.mSavedFragmentState;
} else {
instantiate.mSavedFragmentState = new Bundle();
}
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Instantiated fragment " + instantiate);
}
}
FragmentStateManager(FragmentLifecycleCallbacksDispatcher fragmentLifecycleCallbacksDispatcher, FragmentStore fragmentStore, Fragment fragment, FragmentState fragmentState) {
this.mDispatcher = fragmentLifecycleCallbacksDispatcher;
this.mFragmentStore = fragmentStore;
this.mFragment = fragment;
fragment.mSavedViewState = null;
fragment.mSavedViewRegistryState = null;
fragment.mBackStackNesting = 0;
fragment.mInLayout = false;
fragment.mAdded = false;
fragment.mTargetWho = fragment.mTarget != null ? fragment.mTarget.mWho : null;
fragment.mTarget = null;
if (fragmentState.mSavedFragmentState != null) {
fragment.mSavedFragmentState = fragmentState.mSavedFragmentState;
} else {
fragment.mSavedFragmentState = new Bundle();
}
}
int computeExpectedState() {
if (this.mFragment.mFragmentManager == null) {
return this.mFragment.mState;
}
int i = this.mFragmentManagerState;
int i2 = AnonymousClass2.$SwitchMap$androidx$lifecycle$Lifecycle$State[this.mFragment.mMaxState.ordinal()];
if (i2 != 1) {
if (i2 == 2) {
i = Math.min(i, 5);
} else if (i2 == 3) {
i = Math.min(i, 1);
} else if (i2 == 4) {
i = Math.min(i, 0);
} else {
i = Math.min(i, -1);
}
}
if (this.mFragment.mFromLayout) {
if (this.mFragment.mInLayout) {
i = Math.max(this.mFragmentManagerState, 2);
if (this.mFragment.mView != null && this.mFragment.mView.getParent() == null) {
i = Math.min(i, 2);
}
} else {
i = this.mFragmentManagerState < 4 ? Math.min(i, this.mFragment.mState) : Math.min(i, 1);
}
}
if (!this.mFragment.mAdded) {
i = Math.min(i, 1);
}
SpecialEffectsController.Operation.LifecycleImpact awaitingCompletionLifecycleImpact = (!FragmentManager.USE_STATE_MANAGER || this.mFragment.mContainer == null) ? null : SpecialEffectsController.getOrCreateController(this.mFragment.mContainer, this.mFragment.getParentFragmentManager()).getAwaitingCompletionLifecycleImpact(this);
if (awaitingCompletionLifecycleImpact == SpecialEffectsController.Operation.LifecycleImpact.ADDING) {
i = Math.min(i, 6);
} else if (awaitingCompletionLifecycleImpact == SpecialEffectsController.Operation.LifecycleImpact.REMOVING) {
i = Math.max(i, 3);
} else if (this.mFragment.mRemoving) {
if (this.mFragment.isInBackStack()) {
i = Math.min(i, 1);
} else {
i = Math.min(i, -1);
}
}
if (this.mFragment.mDeferStart && this.mFragment.mState < 5) {
i = Math.min(i, 4);
}
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "computeExpectedState() of " + i + " for " + this.mFragment);
}
return i;
}
/* renamed from: androidx.fragment.app.FragmentStateManager$2, reason: invalid class name */
static /* synthetic */ class AnonymousClass2 {
static final /* synthetic */ int[] $SwitchMap$androidx$lifecycle$Lifecycle$State;
static {
int[] iArr = new int[Lifecycle.State.values().length];
$SwitchMap$androidx$lifecycle$Lifecycle$State = iArr;
try {
iArr[Lifecycle.State.RESUMED.ordinal()] = 1;
} catch (NoSuchFieldError unused) {
}
try {
$SwitchMap$androidx$lifecycle$Lifecycle$State[Lifecycle.State.STARTED.ordinal()] = 2;
} catch (NoSuchFieldError unused2) {
}
try {
$SwitchMap$androidx$lifecycle$Lifecycle$State[Lifecycle.State.CREATED.ordinal()] = 3;
} catch (NoSuchFieldError unused3) {
}
try {
$SwitchMap$androidx$lifecycle$Lifecycle$State[Lifecycle.State.INITIALIZED.ordinal()] = 4;
} catch (NoSuchFieldError unused4) {
}
}
}
void moveToExpectedState() {
if (this.mMovingToState) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Ignoring re-entrant call to moveToExpectedState() for " + getFragment());
return;
}
return;
}
try {
this.mMovingToState = true;
while (true) {
int computeExpectedState = computeExpectedState();
if (computeExpectedState != this.mFragment.mState) {
if (computeExpectedState > this.mFragment.mState) {
switch (this.mFragment.mState + 1) {
case 0:
attach();
break;
case 1:
create();
break;
case 2:
ensureInflatedView();
createView();
break;
case 3:
activityCreated();
break;
case 4:
if (this.mFragment.mView != null && this.mFragment.mContainer != null) {
SpecialEffectsController.getOrCreateController(this.mFragment.mContainer, this.mFragment.getParentFragmentManager()).enqueueAdd(SpecialEffectsController.Operation.State.from(this.mFragment.mView.getVisibility()), this);
}
this.mFragment.mState = 4;
break;
case 5:
start();
break;
case 6:
this.mFragment.mState = 6;
break;
case 7:
resume();
break;
}
} else {
switch (this.mFragment.mState - 1) {
case -1:
detach();
break;
case 0:
destroy();
break;
case 1:
destroyFragmentView();
this.mFragment.mState = 1;
break;
case 2:
this.mFragment.mInLayout = false;
this.mFragment.mState = 2;
break;
case 3:
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "movefrom ACTIVITY_CREATED: " + this.mFragment);
}
if (this.mFragment.mView != null && this.mFragment.mSavedViewState == null) {
saveViewState();
}
if (this.mFragment.mView != null && this.mFragment.mContainer != null) {
SpecialEffectsController.getOrCreateController(this.mFragment.mContainer, this.mFragment.getParentFragmentManager()).enqueueRemove(this);
}
this.mFragment.mState = 3;
break;
case 4:
stop();
break;
case 5:
this.mFragment.mState = 5;
break;
case 6:
pause();
break;
}
}
} else {
if (FragmentManager.USE_STATE_MANAGER && this.mFragment.mHiddenChanged) {
if (this.mFragment.mView != null && this.mFragment.mContainer != null) {
SpecialEffectsController orCreateController = SpecialEffectsController.getOrCreateController(this.mFragment.mContainer, this.mFragment.getParentFragmentManager());
if (this.mFragment.mHidden) {
orCreateController.enqueueHide(this);
} else {
orCreateController.enqueueShow(this);
}
}
if (this.mFragment.mFragmentManager != null) {
this.mFragment.mFragmentManager.invalidateMenuForFragment(this.mFragment);
}
this.mFragment.mHiddenChanged = false;
Fragment fragment = this.mFragment;
fragment.onHiddenChanged(fragment.mHidden);
}
return;
}
}
} finally {
this.mMovingToState = false;
}
}
void ensureInflatedView() {
if (this.mFragment.mFromLayout && this.mFragment.mInLayout && !this.mFragment.mPerformedCreateView) {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "moveto CREATE_VIEW: " + this.mFragment);
}
Fragment fragment = this.mFragment;
fragment.performCreateView(fragment.performGetLayoutInflater(fragment.mSavedFragmentState), null, this.mFragment.mSavedFragmentState);
if (this.mFragment.mView != null) {
this.mFragment.mView.setSaveFromParentEnabled(false);
this.mFragment.mView.setTag(R.id.fragment_container_view_tag, this.mFragment);
if (this.mFragment.mHidden) {
this.mFragment.mView.setVisibility(8);
}
this.mFragment.performViewCreated();
FragmentLifecycleCallbacksDispatcher fragmentLifecycleCallbacksDispatcher = this.mDispatcher;
Fragment fragment2 = this.mFragment;
fragmentLifecycleCallbacksDispatcher.dispatchOnFragmentViewCreated(fragment2, fragment2.mView, this.mFragment.mSavedFragmentState, false);
this.mFragment.mState = 2;
}
}
}
void restoreState(ClassLoader classLoader) {
if (this.mFragment.mSavedFragmentState == null) {
return;
}
this.mFragment.mSavedFragmentState.setClassLoader(classLoader);
Fragment fragment = this.mFragment;
fragment.mSavedViewState = fragment.mSavedFragmentState.getSparseParcelableArray(VIEW_STATE_TAG);
Fragment fragment2 = this.mFragment;
fragment2.mSavedViewRegistryState = fragment2.mSavedFragmentState.getBundle(VIEW_REGISTRY_STATE_TAG);
Fragment fragment3 = this.mFragment;
fragment3.mTargetWho = fragment3.mSavedFragmentState.getString(TARGET_STATE_TAG);
if (this.mFragment.mTargetWho != null) {
Fragment fragment4 = this.mFragment;
fragment4.mTargetRequestCode = fragment4.mSavedFragmentState.getInt(TARGET_REQUEST_CODE_STATE_TAG, 0);
}
if (this.mFragment.mSavedUserVisibleHint != null) {
Fragment fragment5 = this.mFragment;
fragment5.mUserVisibleHint = fragment5.mSavedUserVisibleHint.booleanValue();
this.mFragment.mSavedUserVisibleHint = null;
} else {
Fragment fragment6 = this.mFragment;
fragment6.mUserVisibleHint = fragment6.mSavedFragmentState.getBoolean(USER_VISIBLE_HINT_TAG, true);
}
if (this.mFragment.mUserVisibleHint) {
return;
}
this.mFragment.mDeferStart = true;
}
void attach() {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "moveto ATTACHED: " + this.mFragment);
}
FragmentStateManager fragmentStateManager = null;
if (this.mFragment.mTarget != null) {
FragmentStateManager fragmentStateManager2 = this.mFragmentStore.getFragmentStateManager(this.mFragment.mTarget.mWho);
if (fragmentStateManager2 == null) {
throw new IllegalStateException("Fragment " + this.mFragment + " declared target fragment " + this.mFragment.mTarget + " that does not belong to this FragmentManager!");
}
Fragment fragment = this.mFragment;
fragment.mTargetWho = fragment.mTarget.mWho;
this.mFragment.mTarget = null;
fragmentStateManager = fragmentStateManager2;
} else if (this.mFragment.mTargetWho != null && (fragmentStateManager = this.mFragmentStore.getFragmentStateManager(this.mFragment.mTargetWho)) == null) {
throw new IllegalStateException("Fragment " + this.mFragment + " declared target fragment " + this.mFragment.mTargetWho + " that does not belong to this FragmentManager!");
}
if (fragmentStateManager != null && (FragmentManager.USE_STATE_MANAGER || fragmentStateManager.getFragment().mState < 1)) {
fragmentStateManager.moveToExpectedState();
}
Fragment fragment2 = this.mFragment;
fragment2.mHost = fragment2.mFragmentManager.getHost();
Fragment fragment3 = this.mFragment;
fragment3.mParentFragment = fragment3.mFragmentManager.getParent();
this.mDispatcher.dispatchOnFragmentPreAttached(this.mFragment, false);
this.mFragment.performAttach();
this.mDispatcher.dispatchOnFragmentAttached(this.mFragment, false);
}
void create() {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "moveto CREATED: " + this.mFragment);
}
if (!this.mFragment.mIsCreated) {
FragmentLifecycleCallbacksDispatcher fragmentLifecycleCallbacksDispatcher = this.mDispatcher;
Fragment fragment = this.mFragment;
fragmentLifecycleCallbacksDispatcher.dispatchOnFragmentPreCreated(fragment, fragment.mSavedFragmentState, false);
Fragment fragment2 = this.mFragment;
fragment2.performCreate(fragment2.mSavedFragmentState);
FragmentLifecycleCallbacksDispatcher fragmentLifecycleCallbacksDispatcher2 = this.mDispatcher;
Fragment fragment3 = this.mFragment;
fragmentLifecycleCallbacksDispatcher2.dispatchOnFragmentCreated(fragment3, fragment3.mSavedFragmentState, false);
return;
}
Fragment fragment4 = this.mFragment;
fragment4.restoreChildFragmentState(fragment4.mSavedFragmentState);
this.mFragment.mState = 1;
}
void createView() {
ViewGroup viewGroup;
String str;
if (this.mFragment.mFromLayout) {
return;
}
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "moveto CREATE_VIEW: " + this.mFragment);
}
Fragment fragment = this.mFragment;
LayoutInflater performGetLayoutInflater = fragment.performGetLayoutInflater(fragment.mSavedFragmentState);
if (this.mFragment.mContainer != null) {
viewGroup = this.mFragment.mContainer;
} else if (this.mFragment.mContainerId == 0) {
viewGroup = null;
} else {
if (this.mFragment.mContainerId == -1) {
throw new IllegalArgumentException("Cannot create fragment " + this.mFragment + " for a container view with no id");
}
viewGroup = (ViewGroup) this.mFragment.mFragmentManager.getContainer().onFindViewById(this.mFragment.mContainerId);
if (viewGroup == null && !this.mFragment.mRestored) {
try {
str = this.mFragment.getResources().getResourceName(this.mFragment.mContainerId);
} catch (Resources.NotFoundException unused) {
str = EnvironmentCompat.MEDIA_UNKNOWN;
}
throw new IllegalArgumentException("No view found for id 0x" + Integer.toHexString(this.mFragment.mContainerId) + " (" + str + ") for fragment " + this.mFragment);
}
}
this.mFragment.mContainer = viewGroup;
Fragment fragment2 = this.mFragment;
fragment2.performCreateView(performGetLayoutInflater, viewGroup, fragment2.mSavedFragmentState);
if (this.mFragment.mView != null) {
boolean z = false;
this.mFragment.mView.setSaveFromParentEnabled(false);
this.mFragment.mView.setTag(R.id.fragment_container_view_tag, this.mFragment);
if (viewGroup != null) {
addViewToContainer();
}
if (this.mFragment.mHidden) {
this.mFragment.mView.setVisibility(8);
}
if (ViewCompat.isAttachedToWindow(this.mFragment.mView)) {
ViewCompat.requestApplyInsets(this.mFragment.mView);
} else {
final View view = this.mFragment.mView;
view.addOnAttachStateChangeListener(new View.OnAttachStateChangeListener() { // from class: androidx.fragment.app.FragmentStateManager.1
@Override // android.view.View.OnAttachStateChangeListener
public void onViewDetachedFromWindow(View view2) {
}
@Override // android.view.View.OnAttachStateChangeListener
public void onViewAttachedToWindow(View view2) {
view.removeOnAttachStateChangeListener(this);
ViewCompat.requestApplyInsets(view);
}
});
}
this.mFragment.performViewCreated();
FragmentLifecycleCallbacksDispatcher fragmentLifecycleCallbacksDispatcher = this.mDispatcher;
Fragment fragment3 = this.mFragment;
fragmentLifecycleCallbacksDispatcher.dispatchOnFragmentViewCreated(fragment3, fragment3.mView, this.mFragment.mSavedFragmentState, false);
int visibility = this.mFragment.mView.getVisibility();
float alpha = this.mFragment.mView.getAlpha();
if (FragmentManager.USE_STATE_MANAGER) {
this.mFragment.setPostOnViewCreatedAlpha(alpha);
if (this.mFragment.mContainer != null && visibility == 0) {
View findFocus = this.mFragment.mView.findFocus();
if (findFocus != null) {
this.mFragment.setFocusedView(findFocus);
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "requestFocus: Saved focused view " + findFocus + " for Fragment " + this.mFragment);
}
}
this.mFragment.mView.setAlpha(0.0f);
}
} else {
Fragment fragment4 = this.mFragment;
if (visibility == 0 && fragment4.mContainer != null) {
z = true;
}
fragment4.mIsNewlyAdded = z;
}
}
this.mFragment.mState = 2;
}
void activityCreated() {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "moveto ACTIVITY_CREATED: " + this.mFragment);
}
Fragment fragment = this.mFragment;
fragment.performActivityCreated(fragment.mSavedFragmentState);
FragmentLifecycleCallbacksDispatcher fragmentLifecycleCallbacksDispatcher = this.mDispatcher;
Fragment fragment2 = this.mFragment;
fragmentLifecycleCallbacksDispatcher.dispatchOnFragmentActivityCreated(fragment2, fragment2.mSavedFragmentState, false);
}
void start() {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "moveto STARTED: " + this.mFragment);
}
this.mFragment.performStart();
this.mDispatcher.dispatchOnFragmentStarted(this.mFragment, false);
}
void resume() {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "moveto RESUMED: " + this.mFragment);
}
View focusedView = this.mFragment.getFocusedView();
if (focusedView != null && isFragmentViewChild(focusedView)) {
boolean requestFocus = focusedView.requestFocus();
if (FragmentManager.isLoggingEnabled(2)) {
StringBuilder sb = new StringBuilder("requestFocus: Restoring focused view ");
sb.append(focusedView);
sb.append(" ");
sb.append(requestFocus ? "succeeded" : "failed");
sb.append(" on Fragment ");
sb.append(this.mFragment);
sb.append(" resulting in focused view ");
sb.append(this.mFragment.mView.findFocus());
Log.v(TAG, sb.toString());
}
}
this.mFragment.setFocusedView(null);
this.mFragment.performResume();
this.mDispatcher.dispatchOnFragmentResumed(this.mFragment, false);
this.mFragment.mSavedFragmentState = null;
this.mFragment.mSavedViewState = null;
this.mFragment.mSavedViewRegistryState = null;
}
private boolean isFragmentViewChild(View view) {
if (view == this.mFragment.mView) {
return true;
}
for (ViewParent parent = view.getParent(); parent != null; parent = parent.getParent()) {
if (parent == this.mFragment.mView) {
return true;
}
}
return false;
}
void pause() {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "movefrom RESUMED: " + this.mFragment);
}
this.mFragment.performPause();
this.mDispatcher.dispatchOnFragmentPaused(this.mFragment, false);
}
void stop() {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "movefrom STARTED: " + this.mFragment);
}
this.mFragment.performStop();
this.mDispatcher.dispatchOnFragmentStopped(this.mFragment, false);
}
FragmentState saveState() {
FragmentState fragmentState = new FragmentState(this.mFragment);
if (this.mFragment.mState > -1 && fragmentState.mSavedFragmentState == null) {
fragmentState.mSavedFragmentState = saveBasicState();
if (this.mFragment.mTargetWho != null) {
if (fragmentState.mSavedFragmentState == null) {
fragmentState.mSavedFragmentState = new Bundle();
}
fragmentState.mSavedFragmentState.putString(TARGET_STATE_TAG, this.mFragment.mTargetWho);
if (this.mFragment.mTargetRequestCode != 0) {
fragmentState.mSavedFragmentState.putInt(TARGET_REQUEST_CODE_STATE_TAG, this.mFragment.mTargetRequestCode);
}
}
} else {
fragmentState.mSavedFragmentState = this.mFragment.mSavedFragmentState;
}
return fragmentState;
}
Fragment.SavedState saveInstanceState() {
Bundle saveBasicState;
if (this.mFragment.mState <= -1 || (saveBasicState = saveBasicState()) == null) {
return null;
}
return new Fragment.SavedState(saveBasicState);
}
private Bundle saveBasicState() {
Bundle bundle = new Bundle();
this.mFragment.performSaveInstanceState(bundle);
this.mDispatcher.dispatchOnFragmentSaveInstanceState(this.mFragment, bundle, false);
if (bundle.isEmpty()) {
bundle = null;
}
if (this.mFragment.mView != null) {
saveViewState();
}
if (this.mFragment.mSavedViewState != null) {
if (bundle == null) {
bundle = new Bundle();
}
bundle.putSparseParcelableArray(VIEW_STATE_TAG, this.mFragment.mSavedViewState);
}
if (this.mFragment.mSavedViewRegistryState != null) {
if (bundle == null) {
bundle = new Bundle();
}
bundle.putBundle(VIEW_REGISTRY_STATE_TAG, this.mFragment.mSavedViewRegistryState);
}
if (!this.mFragment.mUserVisibleHint) {
if (bundle == null) {
bundle = new Bundle();
}
bundle.putBoolean(USER_VISIBLE_HINT_TAG, this.mFragment.mUserVisibleHint);
}
return bundle;
}
void saveViewState() {
if (this.mFragment.mView == null) {
return;
}
SparseArray<Parcelable> sparseArray = new SparseArray<>();
this.mFragment.mView.saveHierarchyState(sparseArray);
if (sparseArray.size() > 0) {
this.mFragment.mSavedViewState = sparseArray;
}
Bundle bundle = new Bundle();
this.mFragment.mViewLifecycleOwner.performSave(bundle);
if (bundle.isEmpty()) {
return;
}
this.mFragment.mSavedViewRegistryState = bundle;
}
void destroyFragmentView() {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "movefrom CREATE_VIEW: " + this.mFragment);
}
if (this.mFragment.mContainer != null && this.mFragment.mView != null) {
this.mFragment.mContainer.removeView(this.mFragment.mView);
}
this.mFragment.performDestroyView();
this.mDispatcher.dispatchOnFragmentViewDestroyed(this.mFragment, false);
this.mFragment.mContainer = null;
this.mFragment.mView = null;
this.mFragment.mViewLifecycleOwner = null;
this.mFragment.mViewLifecycleOwnerLiveData.setValue(null);
this.mFragment.mInLayout = false;
}
void destroy() {
Fragment findActiveFragment;
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "movefrom CREATED: " + this.mFragment);
}
boolean z = true;
boolean z2 = this.mFragment.mRemoving && !this.mFragment.isInBackStack();
if (z2 || this.mFragmentStore.getNonConfig().shouldDestroy(this.mFragment)) {
FragmentHostCallback<?> fragmentHostCallback = this.mFragment.mHost;
if (fragmentHostCallback instanceof ViewModelStoreOwner) {
z = this.mFragmentStore.getNonConfig().isCleared();
} else if (fragmentHostCallback.getContext() instanceof Activity) {
z = true ^ ((Activity) fragmentHostCallback.getContext()).isChangingConfigurations();
}
if (z2 || z) {
this.mFragmentStore.getNonConfig().clearNonConfigState(this.mFragment);
}
this.mFragment.performDestroy();
this.mDispatcher.dispatchOnFragmentDestroyed(this.mFragment, false);
for (FragmentStateManager fragmentStateManager : this.mFragmentStore.getActiveFragmentStateManagers()) {
if (fragmentStateManager != null) {
Fragment fragment = fragmentStateManager.getFragment();
if (this.mFragment.mWho.equals(fragment.mTargetWho)) {
fragment.mTarget = this.mFragment;
fragment.mTargetWho = null;
}
}
}
if (this.mFragment.mTargetWho != null) {
Fragment fragment2 = this.mFragment;
fragment2.mTarget = this.mFragmentStore.findActiveFragment(fragment2.mTargetWho);
}
this.mFragmentStore.makeInactive(this);
return;
}
if (this.mFragment.mTargetWho != null && (findActiveFragment = this.mFragmentStore.findActiveFragment(this.mFragment.mTargetWho)) != null && findActiveFragment.mRetainInstance) {
this.mFragment.mTarget = findActiveFragment;
}
this.mFragment.mState = 0;
}
void detach() {
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "movefrom ATTACHED: " + this.mFragment);
}
this.mFragment.performDetach();
this.mDispatcher.dispatchOnFragmentDetached(this.mFragment, false);
this.mFragment.mState = -1;
this.mFragment.mHost = null;
this.mFragment.mParentFragment = null;
this.mFragment.mFragmentManager = null;
if ((!this.mFragment.mRemoving || this.mFragment.isInBackStack()) && !this.mFragmentStore.getNonConfig().shouldDestroy(this.mFragment)) {
return;
}
if (FragmentManager.isLoggingEnabled(3)) {
Log.d(TAG, "initState called for fragment: " + this.mFragment);
}
this.mFragment.initState();
}
void addViewToContainer() {
this.mFragment.mContainer.addView(this.mFragment.mView, this.mFragmentStore.findFragmentIndexInContainer(this.mFragment));
}
}

View File

@ -0,0 +1,12 @@
package androidx.fragment.app;
import java.lang.annotation.ElementType;
import java.lang.annotation.Retention;
import java.lang.annotation.RetentionPolicy;
import java.lang.annotation.Target;
@Target({ElementType.METHOD})
@Retention(RetentionPolicy.CLASS)
/* loaded from: classes.dex */
public @interface FragmentStateManagerControl {
}

View File

@ -0,0 +1,203 @@
package androidx.fragment.app;
import android.os.Bundle;
import android.os.Parcelable;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import androidx.fragment.app.Fragment;
import androidx.lifecycle.Lifecycle;
import androidx.viewpager.widget.PagerAdapter;
import java.util.ArrayList;
@Deprecated
/* loaded from: classes.dex */
public abstract class FragmentStatePagerAdapter extends PagerAdapter {
public static final int BEHAVIOR_RESUME_ONLY_CURRENT_FRAGMENT = 1;
@Deprecated
public static final int BEHAVIOR_SET_USER_VISIBLE_HINT = 0;
private static final boolean DEBUG = false;
private static final String TAG = "FragmentStatePagerAdapt";
private final int mBehavior;
private FragmentTransaction mCurTransaction;
private Fragment mCurrentPrimaryItem;
private boolean mExecutingFinishUpdate;
private final FragmentManager mFragmentManager;
private ArrayList<Fragment> mFragments;
private ArrayList<Fragment.SavedState> mSavedState;
public abstract Fragment getItem(int i);
@Deprecated
public FragmentStatePagerAdapter(FragmentManager fragmentManager) {
this(fragmentManager, 0);
}
public FragmentStatePagerAdapter(FragmentManager fragmentManager, int i) {
this.mCurTransaction = null;
this.mSavedState = new ArrayList<>();
this.mFragments = new ArrayList<>();
this.mCurrentPrimaryItem = null;
this.mFragmentManager = fragmentManager;
this.mBehavior = i;
}
@Override // androidx.viewpager.widget.PagerAdapter
public void startUpdate(ViewGroup viewGroup) {
if (viewGroup.getId() != -1) {
return;
}
throw new IllegalStateException("ViewPager with adapter " + this + " requires a view id");
}
@Override // androidx.viewpager.widget.PagerAdapter
public Object instantiateItem(ViewGroup viewGroup, int i) {
Fragment.SavedState savedState;
Fragment fragment;
if (this.mFragments.size() > i && (fragment = this.mFragments.get(i)) != null) {
return fragment;
}
if (this.mCurTransaction == null) {
this.mCurTransaction = this.mFragmentManager.beginTransaction();
}
Fragment item = getItem(i);
if (this.mSavedState.size() > i && (savedState = this.mSavedState.get(i)) != null) {
item.setInitialSavedState(savedState);
}
while (this.mFragments.size() <= i) {
this.mFragments.add(null);
}
item.setMenuVisibility(false);
if (this.mBehavior == 0) {
item.setUserVisibleHint(false);
}
this.mFragments.set(i, item);
this.mCurTransaction.add(viewGroup.getId(), item);
if (this.mBehavior == 1) {
this.mCurTransaction.setMaxLifecycle(item, Lifecycle.State.STARTED);
}
return item;
}
@Override // androidx.viewpager.widget.PagerAdapter
public void destroyItem(ViewGroup viewGroup, int i, Object obj) {
Fragment fragment = (Fragment) obj;
if (this.mCurTransaction == null) {
this.mCurTransaction = this.mFragmentManager.beginTransaction();
}
while (this.mSavedState.size() <= i) {
this.mSavedState.add(null);
}
this.mSavedState.set(i, fragment.isAdded() ? this.mFragmentManager.saveFragmentInstanceState(fragment) : null);
this.mFragments.set(i, null);
this.mCurTransaction.remove(fragment);
if (fragment.equals(this.mCurrentPrimaryItem)) {
this.mCurrentPrimaryItem = null;
}
}
@Override // androidx.viewpager.widget.PagerAdapter
public void setPrimaryItem(ViewGroup viewGroup, int i, Object obj) {
Fragment fragment = (Fragment) obj;
Fragment fragment2 = this.mCurrentPrimaryItem;
if (fragment != fragment2) {
if (fragment2 != null) {
fragment2.setMenuVisibility(false);
if (this.mBehavior == 1) {
if (this.mCurTransaction == null) {
this.mCurTransaction = this.mFragmentManager.beginTransaction();
}
this.mCurTransaction.setMaxLifecycle(this.mCurrentPrimaryItem, Lifecycle.State.STARTED);
} else {
this.mCurrentPrimaryItem.setUserVisibleHint(false);
}
}
fragment.setMenuVisibility(true);
if (this.mBehavior == 1) {
if (this.mCurTransaction == null) {
this.mCurTransaction = this.mFragmentManager.beginTransaction();
}
this.mCurTransaction.setMaxLifecycle(fragment, Lifecycle.State.RESUMED);
} else {
fragment.setUserVisibleHint(true);
}
this.mCurrentPrimaryItem = fragment;
}
}
@Override // androidx.viewpager.widget.PagerAdapter
public void finishUpdate(ViewGroup viewGroup) {
FragmentTransaction fragmentTransaction = this.mCurTransaction;
if (fragmentTransaction != null) {
if (!this.mExecutingFinishUpdate) {
try {
this.mExecutingFinishUpdate = true;
fragmentTransaction.commitNowAllowingStateLoss();
} finally {
this.mExecutingFinishUpdate = false;
}
}
this.mCurTransaction = null;
}
}
@Override // androidx.viewpager.widget.PagerAdapter
public boolean isViewFromObject(View view, Object obj) {
return ((Fragment) obj).getView() == view;
}
@Override // androidx.viewpager.widget.PagerAdapter
public Parcelable saveState() {
Bundle bundle;
if (this.mSavedState.size() > 0) {
bundle = new Bundle();
Fragment.SavedState[] savedStateArr = new Fragment.SavedState[this.mSavedState.size()];
this.mSavedState.toArray(savedStateArr);
bundle.putParcelableArray("states", savedStateArr);
} else {
bundle = null;
}
for (int i = 0; i < this.mFragments.size(); i++) {
Fragment fragment = this.mFragments.get(i);
if (fragment != null && fragment.isAdded()) {
if (bundle == null) {
bundle = new Bundle();
}
this.mFragmentManager.putFragment(bundle, "f" + i, fragment);
}
}
return bundle;
}
@Override // androidx.viewpager.widget.PagerAdapter
public void restoreState(Parcelable parcelable, ClassLoader classLoader) {
if (parcelable != null) {
Bundle bundle = (Bundle) parcelable;
bundle.setClassLoader(classLoader);
Parcelable[] parcelableArray = bundle.getParcelableArray("states");
this.mSavedState.clear();
this.mFragments.clear();
if (parcelableArray != null) {
for (Parcelable parcelable2 : parcelableArray) {
this.mSavedState.add((Fragment.SavedState) parcelable2);
}
}
for (String str : bundle.keySet()) {
if (str.startsWith("f")) {
int parseInt = Integer.parseInt(str.substring(1));
Fragment fragment = this.mFragmentManager.getFragment(bundle, str);
if (fragment != null) {
while (this.mFragments.size() <= parseInt) {
this.mFragments.add(null);
}
fragment.setMenuVisibility(false);
this.mFragments.set(parseInt, fragment);
} else {
Log.w(TAG, "Bad fragment at key " + str);
}
}
}
}
}
}

View File

@ -0,0 +1,319 @@
package androidx.fragment.app;
import android.util.Log;
import android.view.ViewGroup;
import java.io.FileDescriptor;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.Collections;
import java.util.HashMap;
import java.util.Iterator;
import java.util.List;
/* loaded from: classes.dex */
class FragmentStore {
private static final String TAG = "FragmentManager";
private FragmentManagerViewModel mNonConfig;
private final ArrayList<Fragment> mAdded = new ArrayList<>();
private final HashMap<String, FragmentStateManager> mActive = new HashMap<>();
FragmentManagerViewModel getNonConfig() {
return this.mNonConfig;
}
void setNonConfig(FragmentManagerViewModel fragmentManagerViewModel) {
this.mNonConfig = fragmentManagerViewModel;
}
FragmentStore() {
}
void resetActiveFragments() {
this.mActive.clear();
}
void restoreAddedFragments(List<String> list) {
this.mAdded.clear();
if (list != null) {
for (String str : list) {
Fragment findActiveFragment = findActiveFragment(str);
if (findActiveFragment == null) {
throw new IllegalStateException("No instantiated fragment for (" + str + ")");
}
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "restoreSaveState: added (" + str + "): " + findActiveFragment);
}
addFragment(findActiveFragment);
}
}
}
void makeActive(FragmentStateManager fragmentStateManager) {
Fragment fragment = fragmentStateManager.getFragment();
if (containsActiveFragment(fragment.mWho)) {
return;
}
this.mActive.put(fragment.mWho, fragmentStateManager);
if (fragment.mRetainInstanceChangedWhileDetached) {
if (fragment.mRetainInstance) {
this.mNonConfig.addRetainedFragment(fragment);
} else {
this.mNonConfig.removeRetainedFragment(fragment);
}
fragment.mRetainInstanceChangedWhileDetached = false;
}
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Added fragment to active set " + fragment);
}
}
void addFragment(Fragment fragment) {
if (this.mAdded.contains(fragment)) {
throw new IllegalStateException("Fragment already added: " + fragment);
}
synchronized (this.mAdded) {
this.mAdded.add(fragment);
}
fragment.mAdded = true;
}
void dispatchStateChange(int i) {
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null) {
fragmentStateManager.setFragmentManagerState(i);
}
}
}
void moveToExpectedState() {
Iterator<Fragment> it = this.mAdded.iterator();
while (it.hasNext()) {
FragmentStateManager fragmentStateManager = this.mActive.get(it.next().mWho);
if (fragmentStateManager != null) {
fragmentStateManager.moveToExpectedState();
}
}
for (FragmentStateManager fragmentStateManager2 : this.mActive.values()) {
if (fragmentStateManager2 != null) {
fragmentStateManager2.moveToExpectedState();
Fragment fragment = fragmentStateManager2.getFragment();
if (fragment.mRemoving && !fragment.isInBackStack()) {
makeInactive(fragmentStateManager2);
}
}
}
}
void removeFragment(Fragment fragment) {
synchronized (this.mAdded) {
this.mAdded.remove(fragment);
}
fragment.mAdded = false;
}
void makeInactive(FragmentStateManager fragmentStateManager) {
Fragment fragment = fragmentStateManager.getFragment();
if (fragment.mRetainInstance) {
this.mNonConfig.removeRetainedFragment(fragment);
}
if (this.mActive.put(fragment.mWho, null) != null && FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Removed fragment from active set " + fragment);
}
}
void burpActive() {
this.mActive.values().removeAll(Collections.singleton(null));
}
ArrayList<FragmentState> saveActiveFragments() {
ArrayList<FragmentState> arrayList = new ArrayList<>(this.mActive.size());
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null) {
Fragment fragment = fragmentStateManager.getFragment();
FragmentState saveState = fragmentStateManager.saveState();
arrayList.add(saveState);
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "Saved state of " + fragment + ": " + saveState.mSavedFragmentState);
}
}
}
return arrayList;
}
ArrayList<String> saveAddedFragments() {
synchronized (this.mAdded) {
if (this.mAdded.isEmpty()) {
return null;
}
ArrayList<String> arrayList = new ArrayList<>(this.mAdded.size());
Iterator<Fragment> it = this.mAdded.iterator();
while (it.hasNext()) {
Fragment next = it.next();
arrayList.add(next.mWho);
if (FragmentManager.isLoggingEnabled(2)) {
Log.v(TAG, "saveAllState: adding fragment (" + next.mWho + "): " + next);
}
}
return arrayList;
}
}
List<FragmentStateManager> getActiveFragmentStateManagers() {
ArrayList arrayList = new ArrayList();
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null) {
arrayList.add(fragmentStateManager);
}
}
return arrayList;
}
List<Fragment> getFragments() {
ArrayList arrayList;
if (this.mAdded.isEmpty()) {
return Collections.emptyList();
}
synchronized (this.mAdded) {
arrayList = new ArrayList(this.mAdded);
}
return arrayList;
}
List<Fragment> getActiveFragments() {
ArrayList arrayList = new ArrayList();
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null) {
arrayList.add(fragmentStateManager.getFragment());
} else {
arrayList.add(null);
}
}
return arrayList;
}
int getActiveFragmentCount() {
return this.mActive.size();
}
Fragment findFragmentById(int i) {
for (int size = this.mAdded.size() - 1; size >= 0; size--) {
Fragment fragment = this.mAdded.get(size);
if (fragment != null && fragment.mFragmentId == i) {
return fragment;
}
}
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null) {
Fragment fragment2 = fragmentStateManager.getFragment();
if (fragment2.mFragmentId == i) {
return fragment2;
}
}
}
return null;
}
Fragment findFragmentByTag(String str) {
if (str != null) {
for (int size = this.mAdded.size() - 1; size >= 0; size--) {
Fragment fragment = this.mAdded.get(size);
if (fragment != null && str.equals(fragment.mTag)) {
return fragment;
}
}
}
if (str == null) {
return null;
}
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null) {
Fragment fragment2 = fragmentStateManager.getFragment();
if (str.equals(fragment2.mTag)) {
return fragment2;
}
}
}
return null;
}
boolean containsActiveFragment(String str) {
return this.mActive.get(str) != null;
}
FragmentStateManager getFragmentStateManager(String str) {
return this.mActive.get(str);
}
Fragment findFragmentByWho(String str) {
Fragment findFragmentByWho;
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
if (fragmentStateManager != null && (findFragmentByWho = fragmentStateManager.getFragment().findFragmentByWho(str)) != null) {
return findFragmentByWho;
}
}
return null;
}
Fragment findActiveFragment(String str) {
FragmentStateManager fragmentStateManager = this.mActive.get(str);
if (fragmentStateManager != null) {
return fragmentStateManager.getFragment();
}
return null;
}
int findFragmentIndexInContainer(Fragment fragment) {
ViewGroup viewGroup = fragment.mContainer;
if (viewGroup == null) {
return -1;
}
int indexOf = this.mAdded.indexOf(fragment);
for (int i = indexOf - 1; i >= 0; i--) {
Fragment fragment2 = this.mAdded.get(i);
if (fragment2.mContainer == viewGroup && fragment2.mView != null) {
return viewGroup.indexOfChild(fragment2.mView) + 1;
}
}
while (true) {
indexOf++;
if (indexOf >= this.mAdded.size()) {
return -1;
}
Fragment fragment3 = this.mAdded.get(indexOf);
if (fragment3.mContainer == viewGroup && fragment3.mView != null) {
return viewGroup.indexOfChild(fragment3.mView);
}
}
}
void dump(String str, FileDescriptor fileDescriptor, PrintWriter printWriter, String[] strArr) {
String str2 = str + " ";
if (!this.mActive.isEmpty()) {
printWriter.print(str);
printWriter.println("Active Fragments:");
for (FragmentStateManager fragmentStateManager : this.mActive.values()) {
printWriter.print(str);
if (fragmentStateManager != null) {
Fragment fragment = fragmentStateManager.getFragment();
printWriter.println(fragment);
fragment.dump(str2, fileDescriptor, printWriter, strArr);
} else {
printWriter.println("null");
}
}
}
int size = this.mAdded.size();
if (size > 0) {
printWriter.print(str);
printWriter.println("Added Fragments:");
for (int i = 0; i < size; i++) {
Fragment fragment2 = this.mAdded.get(i);
printWriter.print(str);
printWriter.print(" #");
printWriter.print(i);
printWriter.print(": ");
printWriter.println(fragment2.toString());
}
}
}
}

View File

@ -0,0 +1,300 @@
package androidx.fragment.app;
import android.R;
import android.content.Context;
import android.content.res.TypedArray;
import android.os.Bundle;
import android.os.Parcel;
import android.os.Parcelable;
import android.util.AttributeSet;
import android.view.View;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.TabHost;
import android.widget.TabWidget;
import java.util.ArrayList;
@Deprecated
/* loaded from: classes.dex */
public class FragmentTabHost extends TabHost implements TabHost.OnTabChangeListener {
private boolean mAttached;
private int mContainerId;
private Context mContext;
private FragmentManager mFragmentManager;
private TabInfo mLastTab;
private TabHost.OnTabChangeListener mOnTabChangeListener;
private FrameLayout mRealTabContent;
private final ArrayList<TabInfo> mTabs;
@Override // android.widget.TabHost
@Deprecated
public void setOnTabChangedListener(TabHost.OnTabChangeListener onTabChangeListener) {
this.mOnTabChangeListener = onTabChangeListener;
}
static final class TabInfo {
final Bundle args;
final Class<?> clss;
Fragment fragment;
final String tag;
TabInfo(String str, Class<?> cls, Bundle bundle) {
this.tag = str;
this.clss = cls;
this.args = bundle;
}
}
static class DummyTabFactory implements TabHost.TabContentFactory {
private final Context mContext;
public DummyTabFactory(Context context) {
this.mContext = context;
}
@Override // android.widget.TabHost.TabContentFactory
public View createTabContent(String str) {
View view = new View(this.mContext);
view.setMinimumWidth(0);
view.setMinimumHeight(0);
return view;
}
}
static class SavedState extends View.BaseSavedState {
public static final Parcelable.Creator<SavedState> CREATOR = new Parcelable.Creator<SavedState>() { // from class: androidx.fragment.app.FragmentTabHost.SavedState.1
/* JADX WARN: Can't rename method to resolve collision */
@Override // android.os.Parcelable.Creator
public SavedState createFromParcel(Parcel parcel) {
return new SavedState(parcel);
}
/* JADX WARN: Can't rename method to resolve collision */
@Override // android.os.Parcelable.Creator
public SavedState[] newArray(int i) {
return new SavedState[i];
}
};
String curTab;
SavedState(Parcelable parcelable) {
super(parcelable);
}
SavedState(Parcel parcel) {
super(parcel);
this.curTab = parcel.readString();
}
@Override // android.view.View.BaseSavedState, android.view.AbsSavedState, android.os.Parcelable
public void writeToParcel(Parcel parcel, int i) {
super.writeToParcel(parcel, i);
parcel.writeString(this.curTab);
}
public String toString() {
return "FragmentTabHost.SavedState{" + Integer.toHexString(System.identityHashCode(this)) + " curTab=" + this.curTab + "}";
}
}
@Deprecated
public FragmentTabHost(Context context) {
super(context, null);
this.mTabs = new ArrayList<>();
initFragmentTabHost(context, null);
}
@Deprecated
public FragmentTabHost(Context context, AttributeSet attributeSet) {
super(context, attributeSet);
this.mTabs = new ArrayList<>();
initFragmentTabHost(context, attributeSet);
}
private void initFragmentTabHost(Context context, AttributeSet attributeSet) {
TypedArray obtainStyledAttributes = context.obtainStyledAttributes(attributeSet, new int[]{R.attr.inflatedId}, 0, 0);
this.mContainerId = obtainStyledAttributes.getResourceId(0, 0);
obtainStyledAttributes.recycle();
super.setOnTabChangedListener(this);
}
private void ensureHierarchy(Context context) {
if (findViewById(R.id.tabs) == null) {
LinearLayout linearLayout = new LinearLayout(context);
linearLayout.setOrientation(1);
addView(linearLayout, new FrameLayout.LayoutParams(-1, -1));
TabWidget tabWidget = new TabWidget(context);
tabWidget.setId(R.id.tabs);
tabWidget.setOrientation(0);
linearLayout.addView(tabWidget, new LinearLayout.LayoutParams(-1, -2, 0.0f));
FrameLayout frameLayout = new FrameLayout(context);
frameLayout.setId(R.id.tabcontent);
linearLayout.addView(frameLayout, new LinearLayout.LayoutParams(0, 0, 0.0f));
FrameLayout frameLayout2 = new FrameLayout(context);
this.mRealTabContent = frameLayout2;
frameLayout2.setId(this.mContainerId);
linearLayout.addView(frameLayout2, new LinearLayout.LayoutParams(-1, 0, 1.0f));
}
}
@Override // android.widget.TabHost
@Deprecated
public void setup() {
throw new IllegalStateException("Must call setup() that takes a Context and FragmentManager");
}
@Deprecated
public void setup(Context context, FragmentManager fragmentManager) {
ensureHierarchy(context);
super.setup();
this.mContext = context;
this.mFragmentManager = fragmentManager;
ensureContent();
}
@Deprecated
public void setup(Context context, FragmentManager fragmentManager, int i) {
ensureHierarchy(context);
super.setup();
this.mContext = context;
this.mFragmentManager = fragmentManager;
this.mContainerId = i;
ensureContent();
this.mRealTabContent.setId(i);
if (getId() == -1) {
setId(R.id.tabhost);
}
}
private void ensureContent() {
if (this.mRealTabContent == null) {
FrameLayout frameLayout = (FrameLayout) findViewById(this.mContainerId);
this.mRealTabContent = frameLayout;
if (frameLayout != null) {
return;
}
throw new IllegalStateException("No tab content FrameLayout found for id " + this.mContainerId);
}
}
@Deprecated
public void addTab(TabHost.TabSpec tabSpec, Class<?> cls, Bundle bundle) {
tabSpec.setContent(new DummyTabFactory(this.mContext));
String tag = tabSpec.getTag();
TabInfo tabInfo = new TabInfo(tag, cls, bundle);
if (this.mAttached) {
tabInfo.fragment = this.mFragmentManager.findFragmentByTag(tag);
if (tabInfo.fragment != null && !tabInfo.fragment.isDetached()) {
FragmentTransaction beginTransaction = this.mFragmentManager.beginTransaction();
beginTransaction.detach(tabInfo.fragment);
beginTransaction.commit();
}
}
this.mTabs.add(tabInfo);
addTab(tabSpec);
}
@Override // android.view.ViewGroup, android.view.View
@Deprecated
protected void onAttachedToWindow() {
super.onAttachedToWindow();
String currentTabTag = getCurrentTabTag();
int size = this.mTabs.size();
FragmentTransaction fragmentTransaction = null;
for (int i = 0; i < size; i++) {
TabInfo tabInfo = this.mTabs.get(i);
tabInfo.fragment = this.mFragmentManager.findFragmentByTag(tabInfo.tag);
if (tabInfo.fragment != null && !tabInfo.fragment.isDetached()) {
if (tabInfo.tag.equals(currentTabTag)) {
this.mLastTab = tabInfo;
} else {
if (fragmentTransaction == null) {
fragmentTransaction = this.mFragmentManager.beginTransaction();
}
fragmentTransaction.detach(tabInfo.fragment);
}
}
}
this.mAttached = true;
FragmentTransaction doTabChanged = doTabChanged(currentTabTag, fragmentTransaction);
if (doTabChanged != null) {
doTabChanged.commit();
this.mFragmentManager.executePendingTransactions();
}
}
@Override // android.view.ViewGroup, android.view.View
@Deprecated
protected void onDetachedFromWindow() {
super.onDetachedFromWindow();
this.mAttached = false;
}
@Override // android.view.View
@Deprecated
protected Parcelable onSaveInstanceState() {
SavedState savedState = new SavedState(super.onSaveInstanceState());
savedState.curTab = getCurrentTabTag();
return savedState;
}
@Override // android.view.View
@Deprecated
protected void onRestoreInstanceState(Parcelable parcelable) {
if (!(parcelable instanceof SavedState)) {
super.onRestoreInstanceState(parcelable);
return;
}
SavedState savedState = (SavedState) parcelable;
super.onRestoreInstanceState(savedState.getSuperState());
setCurrentTabByTag(savedState.curTab);
}
@Override // android.widget.TabHost.OnTabChangeListener
@Deprecated
public void onTabChanged(String str) {
FragmentTransaction doTabChanged;
if (this.mAttached && (doTabChanged = doTabChanged(str, null)) != null) {
doTabChanged.commit();
}
TabHost.OnTabChangeListener onTabChangeListener = this.mOnTabChangeListener;
if (onTabChangeListener != null) {
onTabChangeListener.onTabChanged(str);
}
}
private FragmentTransaction doTabChanged(String str, FragmentTransaction fragmentTransaction) {
TabInfo tabInfoForTag = getTabInfoForTag(str);
if (this.mLastTab != tabInfoForTag) {
if (fragmentTransaction == null) {
fragmentTransaction = this.mFragmentManager.beginTransaction();
}
TabInfo tabInfo = this.mLastTab;
if (tabInfo != null && tabInfo.fragment != null) {
fragmentTransaction.detach(this.mLastTab.fragment);
}
if (tabInfoForTag != null) {
if (tabInfoForTag.fragment == null) {
tabInfoForTag.fragment = this.mFragmentManager.getFragmentFactory().instantiate(this.mContext.getClassLoader(), tabInfoForTag.clss.getName());
tabInfoForTag.fragment.setArguments(tabInfoForTag.args);
fragmentTransaction.add(this.mContainerId, tabInfoForTag.fragment, tabInfoForTag.tag);
} else {
fragmentTransaction.attach(tabInfoForTag.fragment);
}
}
this.mLastTab = tabInfoForTag;
}
return fragmentTransaction;
}
private TabInfo getTabInfoForTag(String str) {
int size = this.mTabs.size();
for (int i = 0; i < size; i++) {
TabInfo tabInfo = this.mTabs.get(i);
if (tabInfo.tag.equals(str)) {
return tabInfo;
}
}
return null;
}
}

View File

@ -0,0 +1,356 @@
package androidx.fragment.app;
import android.os.Bundle;
import android.view.View;
import android.view.ViewGroup;
import androidx.core.view.ViewCompat;
import androidx.lifecycle.Lifecycle;
import java.lang.reflect.Modifier;
import java.util.ArrayList;
/* loaded from: classes.dex */
public abstract class FragmentTransaction {
static final int OP_ADD = 1;
static final int OP_ATTACH = 7;
static final int OP_DETACH = 6;
static final int OP_HIDE = 4;
static final int OP_NULL = 0;
static final int OP_REMOVE = 3;
static final int OP_REPLACE = 2;
static final int OP_SET_MAX_LIFECYCLE = 10;
static final int OP_SET_PRIMARY_NAV = 8;
static final int OP_SHOW = 5;
static final int OP_UNSET_PRIMARY_NAV = 9;
public static final int TRANSIT_ENTER_MASK = 4096;
public static final int TRANSIT_EXIT_MASK = 8192;
public static final int TRANSIT_FRAGMENT_CLOSE = 8194;
public static final int TRANSIT_FRAGMENT_FADE = 4099;
public static final int TRANSIT_FRAGMENT_OPEN = 4097;
public static final int TRANSIT_NONE = 0;
public static final int TRANSIT_UNSET = -1;
boolean mAddToBackStack;
boolean mAllowAddToBackStack;
int mBreadCrumbShortTitleRes;
CharSequence mBreadCrumbShortTitleText;
int mBreadCrumbTitleRes;
CharSequence mBreadCrumbTitleText;
private final ClassLoader mClassLoader;
ArrayList<Runnable> mCommitRunnables;
int mEnterAnim;
int mExitAnim;
private final FragmentFactory mFragmentFactory;
String mName;
ArrayList<Op> mOps;
int mPopEnterAnim;
int mPopExitAnim;
boolean mReorderingAllowed;
ArrayList<String> mSharedElementSourceNames;
ArrayList<String> mSharedElementTargetNames;
int mTransition;
public abstract int commit();
public abstract int commitAllowingStateLoss();
public abstract void commitNow();
public abstract void commitNowAllowingStateLoss();
public boolean isAddToBackStackAllowed() {
return this.mAllowAddToBackStack;
}
@Deprecated
public FragmentTransaction setBreadCrumbShortTitle(int i) {
this.mBreadCrumbShortTitleRes = i;
this.mBreadCrumbShortTitleText = null;
return this;
}
@Deprecated
public FragmentTransaction setBreadCrumbShortTitle(CharSequence charSequence) {
this.mBreadCrumbShortTitleRes = 0;
this.mBreadCrumbShortTitleText = charSequence;
return this;
}
@Deprecated
public FragmentTransaction setBreadCrumbTitle(int i) {
this.mBreadCrumbTitleRes = i;
this.mBreadCrumbTitleText = null;
return this;
}
@Deprecated
public FragmentTransaction setBreadCrumbTitle(CharSequence charSequence) {
this.mBreadCrumbTitleRes = 0;
this.mBreadCrumbTitleText = charSequence;
return this;
}
public FragmentTransaction setCustomAnimations(int i, int i2, int i3, int i4) {
this.mEnterAnim = i;
this.mExitAnim = i2;
this.mPopEnterAnim = i3;
this.mPopExitAnim = i4;
return this;
}
public FragmentTransaction setReorderingAllowed(boolean z) {
this.mReorderingAllowed = z;
return this;
}
public FragmentTransaction setTransition(int i) {
this.mTransition = i;
return this;
}
@Deprecated
public FragmentTransaction setTransitionStyle(int i) {
return this;
}
static final class Op {
int mCmd;
Lifecycle.State mCurrentMaxState;
int mEnterAnim;
int mExitAnim;
Fragment mFragment;
Lifecycle.State mOldMaxState;
int mPopEnterAnim;
int mPopExitAnim;
Op() {
}
Op(int i, Fragment fragment) {
this.mCmd = i;
this.mFragment = fragment;
this.mOldMaxState = Lifecycle.State.RESUMED;
this.mCurrentMaxState = Lifecycle.State.RESUMED;
}
Op(int i, Fragment fragment, Lifecycle.State state) {
this.mCmd = i;
this.mFragment = fragment;
this.mOldMaxState = fragment.mMaxState;
this.mCurrentMaxState = state;
}
}
@Deprecated
public FragmentTransaction() {
this.mOps = new ArrayList<>();
this.mAllowAddToBackStack = true;
this.mReorderingAllowed = false;
this.mFragmentFactory = null;
this.mClassLoader = null;
}
FragmentTransaction(FragmentFactory fragmentFactory, ClassLoader classLoader) {
this.mOps = new ArrayList<>();
this.mAllowAddToBackStack = true;
this.mReorderingAllowed = false;
this.mFragmentFactory = fragmentFactory;
this.mClassLoader = classLoader;
}
void addOp(Op op) {
this.mOps.add(op);
op.mEnterAnim = this.mEnterAnim;
op.mExitAnim = this.mExitAnim;
op.mPopEnterAnim = this.mPopEnterAnim;
op.mPopExitAnim = this.mPopExitAnim;
}
private Fragment createFragment(Class<? extends Fragment> cls, Bundle bundle) {
FragmentFactory fragmentFactory = this.mFragmentFactory;
if (fragmentFactory == null) {
throw new IllegalStateException("Creating a Fragment requires that this FragmentTransaction was built with FragmentManager.beginTransaction()");
}
ClassLoader classLoader = this.mClassLoader;
if (classLoader == null) {
throw new IllegalStateException("The FragmentManager must be attached to itshost to create a Fragment");
}
Fragment instantiate = fragmentFactory.instantiate(classLoader, cls.getName());
if (bundle != null) {
instantiate.setArguments(bundle);
}
return instantiate;
}
public final FragmentTransaction add(Class<? extends Fragment> cls, Bundle bundle, String str) {
return add(createFragment(cls, bundle), str);
}
public FragmentTransaction add(Fragment fragment, String str) {
doAddOp(0, fragment, str, 1);
return this;
}
public final FragmentTransaction add(int i, Class<? extends Fragment> cls, Bundle bundle) {
return add(i, createFragment(cls, bundle));
}
public FragmentTransaction add(int i, Fragment fragment) {
doAddOp(i, fragment, null, 1);
return this;
}
public final FragmentTransaction add(int i, Class<? extends Fragment> cls, Bundle bundle, String str) {
return add(i, createFragment(cls, bundle), str);
}
public FragmentTransaction add(int i, Fragment fragment, String str) {
doAddOp(i, fragment, str, 1);
return this;
}
FragmentTransaction add(ViewGroup viewGroup, Fragment fragment, String str) {
fragment.mContainer = viewGroup;
return add(viewGroup.getId(), fragment, str);
}
void doAddOp(int i, Fragment fragment, String str, int i2) {
Class<?> cls = fragment.getClass();
int modifiers = cls.getModifiers();
if (cls.isAnonymousClass() || !Modifier.isPublic(modifiers) || (cls.isMemberClass() && !Modifier.isStatic(modifiers))) {
throw new IllegalStateException("Fragment " + cls.getCanonicalName() + " must be a public static class to be properly recreated from instance state.");
}
if (str != null) {
if (fragment.mTag != null && !str.equals(fragment.mTag)) {
throw new IllegalStateException("Can't change tag of fragment " + fragment + ": was " + fragment.mTag + " now " + str);
}
fragment.mTag = str;
}
if (i != 0) {
if (i == -1) {
throw new IllegalArgumentException("Can't add fragment " + fragment + " with tag " + str + " to container view with no id");
}
if (fragment.mFragmentId != 0 && fragment.mFragmentId != i) {
throw new IllegalStateException("Can't change container ID of fragment " + fragment + ": was " + fragment.mFragmentId + " now " + i);
}
fragment.mFragmentId = i;
fragment.mContainerId = i;
}
addOp(new Op(i2, fragment));
}
public final FragmentTransaction replace(int i, Class<? extends Fragment> cls, Bundle bundle) {
return replace(i, cls, bundle, null);
}
public FragmentTransaction replace(int i, Fragment fragment) {
return replace(i, fragment, (String) null);
}
public final FragmentTransaction replace(int i, Class<? extends Fragment> cls, Bundle bundle, String str) {
return replace(i, createFragment(cls, bundle), str);
}
public FragmentTransaction replace(int i, Fragment fragment, String str) {
if (i == 0) {
throw new IllegalArgumentException("Must use non-zero containerViewId");
}
doAddOp(i, fragment, str, 2);
return this;
}
public FragmentTransaction remove(Fragment fragment) {
addOp(new Op(3, fragment));
return this;
}
public FragmentTransaction hide(Fragment fragment) {
addOp(new Op(4, fragment));
return this;
}
public FragmentTransaction show(Fragment fragment) {
addOp(new Op(5, fragment));
return this;
}
public FragmentTransaction detach(Fragment fragment) {
addOp(new Op(6, fragment));
return this;
}
public FragmentTransaction attach(Fragment fragment) {
addOp(new Op(7, fragment));
return this;
}
public FragmentTransaction setPrimaryNavigationFragment(Fragment fragment) {
addOp(new Op(8, fragment));
return this;
}
public FragmentTransaction setMaxLifecycle(Fragment fragment, Lifecycle.State state) {
addOp(new Op(10, fragment, state));
return this;
}
public boolean isEmpty() {
return this.mOps.isEmpty();
}
public FragmentTransaction setCustomAnimations(int i, int i2) {
return setCustomAnimations(i, i2, 0, 0);
}
public FragmentTransaction addSharedElement(View view, String str) {
if (FragmentTransition.supportsTransition()) {
String transitionName = ViewCompat.getTransitionName(view);
if (transitionName == null) {
throw new IllegalArgumentException("Unique transitionNames are required for all sharedElements");
}
if (this.mSharedElementSourceNames == null) {
this.mSharedElementSourceNames = new ArrayList<>();
this.mSharedElementTargetNames = new ArrayList<>();
} else {
if (this.mSharedElementTargetNames.contains(str)) {
throw new IllegalArgumentException("A shared element with the target name '" + str + "' has already been added to the transaction.");
}
if (this.mSharedElementSourceNames.contains(transitionName)) {
throw new IllegalArgumentException("A shared element with the source name '" + transitionName + "' has already been added to the transaction.");
}
}
this.mSharedElementSourceNames.add(transitionName);
this.mSharedElementTargetNames.add(str);
}
return this;
}
public FragmentTransaction addToBackStack(String str) {
if (!this.mAllowAddToBackStack) {
throw new IllegalStateException("This FragmentTransaction is not allowed to be added to the back stack.");
}
this.mAddToBackStack = true;
this.mName = str;
return this;
}
public FragmentTransaction disallowAddToBackStack() {
if (this.mAddToBackStack) {
throw new IllegalStateException("This transaction is already being added to the back stack");
}
this.mAllowAddToBackStack = false;
return this;
}
@Deprecated
public FragmentTransaction setAllowOptimization(boolean z) {
return setReorderingAllowed(z);
}
public FragmentTransaction runOnCommit(Runnable runnable) {
disallowAddToBackStack();
if (this.mCommitRunnables == null) {
this.mCommitRunnables = new ArrayList<>();
}
this.mCommitRunnables.add(runnable);
return this;
}
}

View File

@ -0,0 +1,736 @@
package androidx.fragment.app;
import android.content.Context;
import android.graphics.Rect;
import android.util.SparseArray;
import android.view.View;
import android.view.ViewGroup;
import androidx.collection.ArrayMap;
import androidx.core.app.SharedElementCallback;
import androidx.core.os.CancellationSignal;
import androidx.core.view.OneShotPreDrawListener;
import androidx.core.view.ViewCompat;
import java.util.ArrayList;
import java.util.Collection;
import java.util.List;
/* loaded from: classes.dex */
class FragmentTransition {
private static final int[] INVERSE_OPS = {0, 3, 0, 1, 5, 4, 7, 6, 9, 8, 10};
static final FragmentTransitionImpl PLATFORM_IMPL = new FragmentTransitionCompat21();
static final FragmentTransitionImpl SUPPORT_IMPL = resolveSupportImpl();
interface Callback {
void onComplete(Fragment fragment, CancellationSignal cancellationSignal);
void onStart(Fragment fragment, CancellationSignal cancellationSignal);
}
static boolean supportsTransition() {
return (PLATFORM_IMPL == null && SUPPORT_IMPL == null) ? false : true;
}
private static FragmentTransitionImpl resolveSupportImpl() {
try {
return (FragmentTransitionImpl) Class.forName("androidx.transition.FragmentTransitionSupport").getDeclaredConstructor(new Class[0]).newInstance(new Object[0]);
} catch (Exception unused) {
return null;
}
}
static void startTransitions(Context context, FragmentContainer fragmentContainer, ArrayList<BackStackRecord> arrayList, ArrayList<Boolean> arrayList2, int i, int i2, boolean z, Callback callback) {
ViewGroup viewGroup;
SparseArray sparseArray = new SparseArray();
for (int i3 = i; i3 < i2; i3++) {
BackStackRecord backStackRecord = arrayList.get(i3);
if (arrayList2.get(i3).booleanValue()) {
calculatePopFragments(backStackRecord, sparseArray, z);
} else {
calculateFragments(backStackRecord, sparseArray, z);
}
}
if (sparseArray.size() != 0) {
View view = new View(context);
int size = sparseArray.size();
for (int i4 = 0; i4 < size; i4++) {
int keyAt = sparseArray.keyAt(i4);
ArrayMap<String, String> calculateNameOverrides = calculateNameOverrides(keyAt, arrayList, arrayList2, i, i2);
FragmentContainerTransition fragmentContainerTransition = (FragmentContainerTransition) sparseArray.valueAt(i4);
if (fragmentContainer.onHasView() && (viewGroup = (ViewGroup) fragmentContainer.onFindViewById(keyAt)) != null) {
if (z) {
configureTransitionsReordered(viewGroup, fragmentContainerTransition, view, calculateNameOverrides, callback);
} else {
configureTransitionsOrdered(viewGroup, fragmentContainerTransition, view, calculateNameOverrides, callback);
}
}
}
}
}
private static ArrayMap<String, String> calculateNameOverrides(int i, ArrayList<BackStackRecord> arrayList, ArrayList<Boolean> arrayList2, int i2, int i3) {
ArrayList<String> arrayList3;
ArrayList<String> arrayList4;
ArrayMap<String, String> arrayMap = new ArrayMap<>();
for (int i4 = i3 - 1; i4 >= i2; i4--) {
BackStackRecord backStackRecord = arrayList.get(i4);
if (backStackRecord.interactsWith(i)) {
boolean booleanValue = arrayList2.get(i4).booleanValue();
if (backStackRecord.mSharedElementSourceNames != null) {
int size = backStackRecord.mSharedElementSourceNames.size();
if (booleanValue) {
arrayList3 = backStackRecord.mSharedElementSourceNames;
arrayList4 = backStackRecord.mSharedElementTargetNames;
} else {
ArrayList<String> arrayList5 = backStackRecord.mSharedElementSourceNames;
arrayList3 = backStackRecord.mSharedElementTargetNames;
arrayList4 = arrayList5;
}
for (int i5 = 0; i5 < size; i5++) {
String str = arrayList4.get(i5);
String str2 = arrayList3.get(i5);
String remove = arrayMap.remove(str2);
if (remove != null) {
arrayMap.put(str, remove);
} else {
arrayMap.put(str, str2);
}
}
}
}
}
return arrayMap;
}
private static void configureTransitionsReordered(ViewGroup viewGroup, FragmentContainerTransition fragmentContainerTransition, View view, ArrayMap<String, String> arrayMap, final Callback callback) {
Object obj;
Fragment fragment = fragmentContainerTransition.lastIn;
final Fragment fragment2 = fragmentContainerTransition.firstOut;
FragmentTransitionImpl chooseImpl = chooseImpl(fragment2, fragment);
if (chooseImpl == null) {
return;
}
boolean z = fragmentContainerTransition.lastInIsPop;
boolean z2 = fragmentContainerTransition.firstOutIsPop;
ArrayList<View> arrayList = new ArrayList<>();
ArrayList<View> arrayList2 = new ArrayList<>();
Object enterTransition = getEnterTransition(chooseImpl, fragment, z);
Object exitTransition = getExitTransition(chooseImpl, fragment2, z2);
Object configureSharedElementsReordered = configureSharedElementsReordered(chooseImpl, viewGroup, view, arrayMap, fragmentContainerTransition, arrayList2, arrayList, enterTransition, exitTransition);
if (enterTransition == null && configureSharedElementsReordered == null) {
obj = exitTransition;
if (obj == null) {
return;
}
} else {
obj = exitTransition;
}
ArrayList<View> configureEnteringExitingViews = configureEnteringExitingViews(chooseImpl, obj, fragment2, arrayList2, view);
ArrayList<View> configureEnteringExitingViews2 = configureEnteringExitingViews(chooseImpl, enterTransition, fragment, arrayList, view);
setViewVisibility(configureEnteringExitingViews2, 4);
Object mergeTransitions = mergeTransitions(chooseImpl, enterTransition, obj, configureSharedElementsReordered, fragment, z);
if (fragment2 != null && configureEnteringExitingViews != null && (configureEnteringExitingViews.size() > 0 || arrayList2.size() > 0)) {
final CancellationSignal cancellationSignal = new CancellationSignal();
callback.onStart(fragment2, cancellationSignal);
chooseImpl.setListenerForTransitionEnd(fragment2, mergeTransitions, cancellationSignal, new Runnable() { // from class: androidx.fragment.app.FragmentTransition.1
@Override // java.lang.Runnable
public void run() {
Callback.this.onComplete(fragment2, cancellationSignal);
}
});
}
if (mergeTransitions != null) {
replaceHide(chooseImpl, obj, fragment2, configureEnteringExitingViews);
ArrayList<String> prepareSetNameOverridesReordered = chooseImpl.prepareSetNameOverridesReordered(arrayList);
chooseImpl.scheduleRemoveTargets(mergeTransitions, enterTransition, configureEnteringExitingViews2, obj, configureEnteringExitingViews, configureSharedElementsReordered, arrayList);
chooseImpl.beginDelayedTransition(viewGroup, mergeTransitions);
chooseImpl.setNameOverridesReordered(viewGroup, arrayList2, arrayList, prepareSetNameOverridesReordered, arrayMap);
setViewVisibility(configureEnteringExitingViews2, 0);
chooseImpl.swapSharedElementTargets(configureSharedElementsReordered, arrayList2, arrayList);
}
}
private static void replaceHide(FragmentTransitionImpl fragmentTransitionImpl, Object obj, Fragment fragment, final ArrayList<View> arrayList) {
if (fragment != null && obj != null && fragment.mAdded && fragment.mHidden && fragment.mHiddenChanged) {
fragment.setHideReplaced(true);
fragmentTransitionImpl.scheduleHideFragmentView(obj, fragment.getView(), arrayList);
OneShotPreDrawListener.add(fragment.mContainer, new Runnable() { // from class: androidx.fragment.app.FragmentTransition.2
@Override // java.lang.Runnable
public void run() {
FragmentTransition.setViewVisibility(arrayList, 4);
}
});
}
}
private static void configureTransitionsOrdered(ViewGroup viewGroup, FragmentContainerTransition fragmentContainerTransition, View view, ArrayMap<String, String> arrayMap, final Callback callback) {
Object obj;
Fragment fragment = fragmentContainerTransition.lastIn;
final Fragment fragment2 = fragmentContainerTransition.firstOut;
FragmentTransitionImpl chooseImpl = chooseImpl(fragment2, fragment);
if (chooseImpl == null) {
return;
}
boolean z = fragmentContainerTransition.lastInIsPop;
boolean z2 = fragmentContainerTransition.firstOutIsPop;
Object enterTransition = getEnterTransition(chooseImpl, fragment, z);
Object exitTransition = getExitTransition(chooseImpl, fragment2, z2);
ArrayList arrayList = new ArrayList();
ArrayList<View> arrayList2 = new ArrayList<>();
Object configureSharedElementsOrdered = configureSharedElementsOrdered(chooseImpl, viewGroup, view, arrayMap, fragmentContainerTransition, arrayList, arrayList2, enterTransition, exitTransition);
if (enterTransition == null && configureSharedElementsOrdered == null) {
obj = exitTransition;
if (obj == null) {
return;
}
} else {
obj = exitTransition;
}
ArrayList<View> configureEnteringExitingViews = configureEnteringExitingViews(chooseImpl, obj, fragment2, arrayList, view);
if (configureEnteringExitingViews == null || configureEnteringExitingViews.isEmpty()) {
obj = null;
}
Object obj2 = obj;
chooseImpl.addTarget(enterTransition, view);
Object mergeTransitions = mergeTransitions(chooseImpl, enterTransition, obj2, configureSharedElementsOrdered, fragment, fragmentContainerTransition.lastInIsPop);
if (fragment2 != null && configureEnteringExitingViews != null && (configureEnteringExitingViews.size() > 0 || arrayList.size() > 0)) {
final CancellationSignal cancellationSignal = new CancellationSignal();
callback.onStart(fragment2, cancellationSignal);
chooseImpl.setListenerForTransitionEnd(fragment2, mergeTransitions, cancellationSignal, new Runnable() { // from class: androidx.fragment.app.FragmentTransition.3
@Override // java.lang.Runnable
public void run() {
Callback.this.onComplete(fragment2, cancellationSignal);
}
});
}
if (mergeTransitions != null) {
ArrayList<View> arrayList3 = new ArrayList<>();
chooseImpl.scheduleRemoveTargets(mergeTransitions, enterTransition, arrayList3, obj2, configureEnteringExitingViews, configureSharedElementsOrdered, arrayList2);
scheduleTargetChange(chooseImpl, viewGroup, fragment, view, arrayList2, enterTransition, arrayList3, obj2, configureEnteringExitingViews);
chooseImpl.setNameOverridesOrdered(viewGroup, arrayList2, arrayMap);
chooseImpl.beginDelayedTransition(viewGroup, mergeTransitions);
chooseImpl.scheduleNameReset(viewGroup, arrayList2, arrayMap);
}
}
private static void scheduleTargetChange(final FragmentTransitionImpl fragmentTransitionImpl, ViewGroup viewGroup, final Fragment fragment, final View view, final ArrayList<View> arrayList, final Object obj, final ArrayList<View> arrayList2, final Object obj2, final ArrayList<View> arrayList3) {
OneShotPreDrawListener.add(viewGroup, new Runnable() { // from class: androidx.fragment.app.FragmentTransition.4
@Override // java.lang.Runnable
public void run() {
Object obj3 = obj;
if (obj3 != null) {
fragmentTransitionImpl.removeTarget(obj3, view);
arrayList2.addAll(FragmentTransition.configureEnteringExitingViews(fragmentTransitionImpl, obj, fragment, arrayList, view));
}
if (arrayList3 != null) {
if (obj2 != null) {
ArrayList<View> arrayList4 = new ArrayList<>();
arrayList4.add(view);
fragmentTransitionImpl.replaceTargets(obj2, arrayList3, arrayList4);
}
arrayList3.clear();
arrayList3.add(view);
}
}
});
}
private static FragmentTransitionImpl chooseImpl(Fragment fragment, Fragment fragment2) {
ArrayList arrayList = new ArrayList();
if (fragment != null) {
Object exitTransition = fragment.getExitTransition();
if (exitTransition != null) {
arrayList.add(exitTransition);
}
Object returnTransition = fragment.getReturnTransition();
if (returnTransition != null) {
arrayList.add(returnTransition);
}
Object sharedElementReturnTransition = fragment.getSharedElementReturnTransition();
if (sharedElementReturnTransition != null) {
arrayList.add(sharedElementReturnTransition);
}
}
if (fragment2 != null) {
Object enterTransition = fragment2.getEnterTransition();
if (enterTransition != null) {
arrayList.add(enterTransition);
}
Object reenterTransition = fragment2.getReenterTransition();
if (reenterTransition != null) {
arrayList.add(reenterTransition);
}
Object sharedElementEnterTransition = fragment2.getSharedElementEnterTransition();
if (sharedElementEnterTransition != null) {
arrayList.add(sharedElementEnterTransition);
}
}
if (arrayList.isEmpty()) {
return null;
}
FragmentTransitionImpl fragmentTransitionImpl = PLATFORM_IMPL;
if (fragmentTransitionImpl != null && canHandleAll(fragmentTransitionImpl, arrayList)) {
return fragmentTransitionImpl;
}
FragmentTransitionImpl fragmentTransitionImpl2 = SUPPORT_IMPL;
if (fragmentTransitionImpl2 != null && canHandleAll(fragmentTransitionImpl2, arrayList)) {
return fragmentTransitionImpl2;
}
if (fragmentTransitionImpl == null && fragmentTransitionImpl2 == null) {
return null;
}
throw new IllegalArgumentException("Invalid Transition types");
}
private static boolean canHandleAll(FragmentTransitionImpl fragmentTransitionImpl, List<Object> list) {
int size = list.size();
for (int i = 0; i < size; i++) {
if (!fragmentTransitionImpl.canHandle(list.get(i))) {
return false;
}
}
return true;
}
private static Object getSharedElementTransition(FragmentTransitionImpl fragmentTransitionImpl, Fragment fragment, Fragment fragment2, boolean z) {
Object sharedElementEnterTransition;
if (fragment == null || fragment2 == null) {
return null;
}
if (z) {
sharedElementEnterTransition = fragment2.getSharedElementReturnTransition();
} else {
sharedElementEnterTransition = fragment.getSharedElementEnterTransition();
}
return fragmentTransitionImpl.wrapTransitionInSet(fragmentTransitionImpl.cloneTransition(sharedElementEnterTransition));
}
private static Object getEnterTransition(FragmentTransitionImpl fragmentTransitionImpl, Fragment fragment, boolean z) {
Object enterTransition;
if (fragment == null) {
return null;
}
if (z) {
enterTransition = fragment.getReenterTransition();
} else {
enterTransition = fragment.getEnterTransition();
}
return fragmentTransitionImpl.cloneTransition(enterTransition);
}
private static Object getExitTransition(FragmentTransitionImpl fragmentTransitionImpl, Fragment fragment, boolean z) {
Object exitTransition;
if (fragment == null) {
return null;
}
if (z) {
exitTransition = fragment.getReturnTransition();
} else {
exitTransition = fragment.getExitTransition();
}
return fragmentTransitionImpl.cloneTransition(exitTransition);
}
private static Object configureSharedElementsReordered(final FragmentTransitionImpl fragmentTransitionImpl, ViewGroup viewGroup, View view, ArrayMap<String, String> arrayMap, FragmentContainerTransition fragmentContainerTransition, ArrayList<View> arrayList, ArrayList<View> arrayList2, Object obj, Object obj2) {
Object obj3;
final View view2;
final Rect rect;
final Fragment fragment = fragmentContainerTransition.lastIn;
final Fragment fragment2 = fragmentContainerTransition.firstOut;
if (fragment != null) {
fragment.requireView().setVisibility(0);
}
if (fragment == null || fragment2 == null) {
return null;
}
final boolean z = fragmentContainerTransition.lastInIsPop;
Object sharedElementTransition = arrayMap.isEmpty() ? null : getSharedElementTransition(fragmentTransitionImpl, fragment, fragment2, z);
ArrayMap<String, View> captureOutSharedElements = captureOutSharedElements(fragmentTransitionImpl, arrayMap, sharedElementTransition, fragmentContainerTransition);
final ArrayMap<String, View> captureInSharedElements = captureInSharedElements(fragmentTransitionImpl, arrayMap, sharedElementTransition, fragmentContainerTransition);
if (arrayMap.isEmpty()) {
if (captureOutSharedElements != null) {
captureOutSharedElements.clear();
}
if (captureInSharedElements != null) {
captureInSharedElements.clear();
}
obj3 = null;
} else {
addSharedElementsWithMatchingNames(arrayList, captureOutSharedElements, arrayMap.keySet());
addSharedElementsWithMatchingNames(arrayList2, captureInSharedElements, arrayMap.values());
obj3 = sharedElementTransition;
}
if (obj == null && obj2 == null && obj3 == null) {
return null;
}
callSharedElementStartEnd(fragment, fragment2, z, captureOutSharedElements, true);
if (obj3 != null) {
arrayList2.add(view);
fragmentTransitionImpl.setSharedElementTargets(obj3, view, arrayList);
setOutEpicenter(fragmentTransitionImpl, obj3, obj2, captureOutSharedElements, fragmentContainerTransition.firstOutIsPop, fragmentContainerTransition.firstOutTransaction);
Rect rect2 = new Rect();
View inEpicenterView = getInEpicenterView(captureInSharedElements, fragmentContainerTransition, obj, z);
if (inEpicenterView != null) {
fragmentTransitionImpl.setEpicenter(obj, rect2);
}
rect = rect2;
view2 = inEpicenterView;
} else {
view2 = null;
rect = null;
}
OneShotPreDrawListener.add(viewGroup, new Runnable() { // from class: androidx.fragment.app.FragmentTransition.5
@Override // java.lang.Runnable
public void run() {
FragmentTransition.callSharedElementStartEnd(Fragment.this, fragment2, z, captureInSharedElements, false);
View view3 = view2;
if (view3 != null) {
fragmentTransitionImpl.getBoundsOnScreen(view3, rect);
}
}
});
return obj3;
}
private static void addSharedElementsWithMatchingNames(ArrayList<View> arrayList, ArrayMap<String, View> arrayMap, Collection<String> collection) {
for (int size = arrayMap.size() - 1; size >= 0; size--) {
View valueAt = arrayMap.valueAt(size);
if (collection.contains(ViewCompat.getTransitionName(valueAt))) {
arrayList.add(valueAt);
}
}
}
private static Object configureSharedElementsOrdered(final FragmentTransitionImpl fragmentTransitionImpl, ViewGroup viewGroup, final View view, final ArrayMap<String, String> arrayMap, final FragmentContainerTransition fragmentContainerTransition, final ArrayList<View> arrayList, final ArrayList<View> arrayList2, final Object obj, Object obj2) {
Object sharedElementTransition;
ArrayMap<String, String> arrayMap2;
Object obj3;
Rect rect;
final Fragment fragment = fragmentContainerTransition.lastIn;
final Fragment fragment2 = fragmentContainerTransition.firstOut;
if (fragment == null || fragment2 == null) {
return null;
}
final boolean z = fragmentContainerTransition.lastInIsPop;
if (arrayMap.isEmpty()) {
arrayMap2 = arrayMap;
sharedElementTransition = null;
} else {
sharedElementTransition = getSharedElementTransition(fragmentTransitionImpl, fragment, fragment2, z);
arrayMap2 = arrayMap;
}
ArrayMap<String, View> captureOutSharedElements = captureOutSharedElements(fragmentTransitionImpl, arrayMap2, sharedElementTransition, fragmentContainerTransition);
if (arrayMap.isEmpty()) {
obj3 = null;
} else {
arrayList.addAll(captureOutSharedElements.values());
obj3 = sharedElementTransition;
}
if (obj == null && obj2 == null && obj3 == null) {
return null;
}
callSharedElementStartEnd(fragment, fragment2, z, captureOutSharedElements, true);
if (obj3 != null) {
rect = new Rect();
fragmentTransitionImpl.setSharedElementTargets(obj3, view, arrayList);
setOutEpicenter(fragmentTransitionImpl, obj3, obj2, captureOutSharedElements, fragmentContainerTransition.firstOutIsPop, fragmentContainerTransition.firstOutTransaction);
if (obj != null) {
fragmentTransitionImpl.setEpicenter(obj, rect);
}
} else {
rect = null;
}
final Object obj4 = obj3;
final Rect rect2 = rect;
OneShotPreDrawListener.add(viewGroup, new Runnable() { // from class: androidx.fragment.app.FragmentTransition.6
@Override // java.lang.Runnable
public void run() {
ArrayMap<String, View> captureInSharedElements = FragmentTransition.captureInSharedElements(FragmentTransitionImpl.this, arrayMap, obj4, fragmentContainerTransition);
if (captureInSharedElements != null) {
arrayList2.addAll(captureInSharedElements.values());
arrayList2.add(view);
}
FragmentTransition.callSharedElementStartEnd(fragment, fragment2, z, captureInSharedElements, false);
Object obj5 = obj4;
if (obj5 != null) {
FragmentTransitionImpl.this.swapSharedElementTargets(obj5, arrayList, arrayList2);
View inEpicenterView = FragmentTransition.getInEpicenterView(captureInSharedElements, fragmentContainerTransition, obj, z);
if (inEpicenterView != null) {
FragmentTransitionImpl.this.getBoundsOnScreen(inEpicenterView, rect2);
}
}
}
});
return obj3;
}
private static ArrayMap<String, View> captureOutSharedElements(FragmentTransitionImpl fragmentTransitionImpl, ArrayMap<String, String> arrayMap, Object obj, FragmentContainerTransition fragmentContainerTransition) {
SharedElementCallback exitTransitionCallback;
ArrayList<String> arrayList;
if (arrayMap.isEmpty() || obj == null) {
arrayMap.clear();
return null;
}
Fragment fragment = fragmentContainerTransition.firstOut;
ArrayMap<String, View> arrayMap2 = new ArrayMap<>();
fragmentTransitionImpl.findNamedViews(arrayMap2, fragment.requireView());
BackStackRecord backStackRecord = fragmentContainerTransition.firstOutTransaction;
if (fragmentContainerTransition.firstOutIsPop) {
exitTransitionCallback = fragment.getEnterTransitionCallback();
arrayList = backStackRecord.mSharedElementTargetNames;
} else {
exitTransitionCallback = fragment.getExitTransitionCallback();
arrayList = backStackRecord.mSharedElementSourceNames;
}
if (arrayList != null) {
arrayMap2.retainAll(arrayList);
}
if (exitTransitionCallback != null) {
exitTransitionCallback.onMapSharedElements(arrayList, arrayMap2);
for (int size = arrayList.size() - 1; size >= 0; size--) {
String str = arrayList.get(size);
View view = arrayMap2.get(str);
if (view == null) {
arrayMap.remove(str);
} else if (!str.equals(ViewCompat.getTransitionName(view))) {
arrayMap.put(ViewCompat.getTransitionName(view), arrayMap.remove(str));
}
}
} else {
arrayMap.retainAll(arrayMap2.keySet());
}
return arrayMap2;
}
static ArrayMap<String, View> captureInSharedElements(FragmentTransitionImpl fragmentTransitionImpl, ArrayMap<String, String> arrayMap, Object obj, FragmentContainerTransition fragmentContainerTransition) {
SharedElementCallback enterTransitionCallback;
ArrayList<String> arrayList;
String findKeyForValue;
Fragment fragment = fragmentContainerTransition.lastIn;
View view = fragment.getView();
if (arrayMap.isEmpty() || obj == null || view == null) {
arrayMap.clear();
return null;
}
ArrayMap<String, View> arrayMap2 = new ArrayMap<>();
fragmentTransitionImpl.findNamedViews(arrayMap2, view);
BackStackRecord backStackRecord = fragmentContainerTransition.lastInTransaction;
if (fragmentContainerTransition.lastInIsPop) {
enterTransitionCallback = fragment.getExitTransitionCallback();
arrayList = backStackRecord.mSharedElementSourceNames;
} else {
enterTransitionCallback = fragment.getEnterTransitionCallback();
arrayList = backStackRecord.mSharedElementTargetNames;
}
if (arrayList != null) {
arrayMap2.retainAll(arrayList);
arrayMap2.retainAll(arrayMap.values());
}
if (enterTransitionCallback != null) {
enterTransitionCallback.onMapSharedElements(arrayList, arrayMap2);
for (int size = arrayList.size() - 1; size >= 0; size--) {
String str = arrayList.get(size);
View view2 = arrayMap2.get(str);
if (view2 == null) {
String findKeyForValue2 = findKeyForValue(arrayMap, str);
if (findKeyForValue2 != null) {
arrayMap.remove(findKeyForValue2);
}
} else if (!str.equals(ViewCompat.getTransitionName(view2)) && (findKeyForValue = findKeyForValue(arrayMap, str)) != null) {
arrayMap.put(findKeyForValue, ViewCompat.getTransitionName(view2));
}
}
} else {
retainValues(arrayMap, arrayMap2);
}
return arrayMap2;
}
static String findKeyForValue(ArrayMap<String, String> arrayMap, String str) {
int size = arrayMap.size();
for (int i = 0; i < size; i++) {
if (str.equals(arrayMap.valueAt(i))) {
return arrayMap.keyAt(i);
}
}
return null;
}
static View getInEpicenterView(ArrayMap<String, View> arrayMap, FragmentContainerTransition fragmentContainerTransition, Object obj, boolean z) {
String str;
BackStackRecord backStackRecord = fragmentContainerTransition.lastInTransaction;
if (obj == null || arrayMap == null || backStackRecord.mSharedElementSourceNames == null || backStackRecord.mSharedElementSourceNames.isEmpty()) {
return null;
}
if (z) {
str = backStackRecord.mSharedElementSourceNames.get(0);
} else {
str = backStackRecord.mSharedElementTargetNames.get(0);
}
return arrayMap.get(str);
}
private static void setOutEpicenter(FragmentTransitionImpl fragmentTransitionImpl, Object obj, Object obj2, ArrayMap<String, View> arrayMap, boolean z, BackStackRecord backStackRecord) {
String str;
if (backStackRecord.mSharedElementSourceNames == null || backStackRecord.mSharedElementSourceNames.isEmpty()) {
return;
}
if (z) {
str = backStackRecord.mSharedElementTargetNames.get(0);
} else {
str = backStackRecord.mSharedElementSourceNames.get(0);
}
View view = arrayMap.get(str);
fragmentTransitionImpl.setEpicenter(obj, view);
if (obj2 != null) {
fragmentTransitionImpl.setEpicenter(obj2, view);
}
}
static void retainValues(ArrayMap<String, String> arrayMap, ArrayMap<String, View> arrayMap2) {
for (int size = arrayMap.size() - 1; size >= 0; size--) {
if (!arrayMap2.containsKey(arrayMap.valueAt(size))) {
arrayMap.removeAt(size);
}
}
}
static void callSharedElementStartEnd(Fragment fragment, Fragment fragment2, boolean z, ArrayMap<String, View> arrayMap, boolean z2) {
SharedElementCallback enterTransitionCallback;
if (z) {
enterTransitionCallback = fragment2.getEnterTransitionCallback();
} else {
enterTransitionCallback = fragment.getEnterTransitionCallback();
}
if (enterTransitionCallback != null) {
ArrayList arrayList = new ArrayList();
ArrayList arrayList2 = new ArrayList();
int size = arrayMap == null ? 0 : arrayMap.size();
for (int i = 0; i < size; i++) {
arrayList2.add(arrayMap.keyAt(i));
arrayList.add(arrayMap.valueAt(i));
}
if (z2) {
enterTransitionCallback.onSharedElementStart(arrayList2, arrayList, null);
} else {
enterTransitionCallback.onSharedElementEnd(arrayList2, arrayList, null);
}
}
}
static ArrayList<View> configureEnteringExitingViews(FragmentTransitionImpl fragmentTransitionImpl, Object obj, Fragment fragment, ArrayList<View> arrayList, View view) {
if (obj == null) {
return null;
}
ArrayList<View> arrayList2 = new ArrayList<>();
View view2 = fragment.getView();
if (view2 != null) {
fragmentTransitionImpl.captureTransitioningViews(arrayList2, view2);
}
if (arrayList != null) {
arrayList2.removeAll(arrayList);
}
if (arrayList2.isEmpty()) {
return arrayList2;
}
arrayList2.add(view);
fragmentTransitionImpl.addTargets(obj, arrayList2);
return arrayList2;
}
static void setViewVisibility(ArrayList<View> arrayList, int i) {
if (arrayList == null) {
return;
}
for (int size = arrayList.size() - 1; size >= 0; size--) {
arrayList.get(size).setVisibility(i);
}
}
private static Object mergeTransitions(FragmentTransitionImpl fragmentTransitionImpl, Object obj, Object obj2, Object obj3, Fragment fragment, boolean z) {
boolean allowEnterTransitionOverlap;
if (obj != null && obj2 != null && fragment != null) {
if (z) {
allowEnterTransitionOverlap = fragment.getAllowReturnTransitionOverlap();
} else {
allowEnterTransitionOverlap = fragment.getAllowEnterTransitionOverlap();
}
if (!allowEnterTransitionOverlap) {
return fragmentTransitionImpl.mergeTransitionsInSequence(obj2, obj, obj3);
}
}
return fragmentTransitionImpl.mergeTransitionsTogether(obj2, obj, obj3);
}
public static void calculateFragments(BackStackRecord backStackRecord, SparseArray<FragmentContainerTransition> sparseArray, boolean z) {
int size = backStackRecord.mOps.size();
for (int i = 0; i < size; i++) {
addToFirstInLastOut(backStackRecord, backStackRecord.mOps.get(i), sparseArray, false, z);
}
}
public static void calculatePopFragments(BackStackRecord backStackRecord, SparseArray<FragmentContainerTransition> sparseArray, boolean z) {
if (backStackRecord.mManager.getContainer().onHasView()) {
for (int size = backStackRecord.mOps.size() - 1; size >= 0; size--) {
addToFirstInLastOut(backStackRecord, backStackRecord.mOps.get(size), sparseArray, true, z);
}
}
}
/* JADX WARN: Code restructure failed: missing block: B:59:0x0039, code lost:
if (r0.mAdded != false) goto L70;
*/
/* JADX WARN: Code restructure failed: missing block: B:60:0x008e, code lost:
r9 = true;
*/
/* JADX WARN: Code restructure failed: missing block: B:71:0x0070, code lost:
r9 = true;
*/
/* JADX WARN: Code restructure failed: missing block: B:96:0x008c, code lost:
if (r0.mHidden == false) goto L70;
*/
/* JADX WARN: Removed duplicated region for block: B:26:0x009c */
/* JADX WARN: Removed duplicated region for block: B:29:0x00a9 A[ADDED_TO_REGION] */
/* JADX WARN: Removed duplicated region for block: B:36:0x00b7 */
/* JADX WARN: Removed duplicated region for block: B:38:0x00c9 A[ADDED_TO_REGION] */
/* JADX WARN: Removed duplicated region for block: B:43:0x00db A[ADDED_TO_REGION] */
/* JADX WARN: Removed duplicated region for block: B:52:? A[ADDED_TO_REGION, RETURN, SYNTHETIC] */
/*
Code decompiled incorrectly, please refer to instructions dump.
To view partially-correct add '--show-bad-code' argument
*/
private static void addToFirstInLastOut(androidx.fragment.app.BackStackRecord r8, androidx.fragment.app.FragmentTransaction.Op r9, android.util.SparseArray<androidx.fragment.app.FragmentTransition.FragmentContainerTransition> r10, boolean r11, boolean r12) {
/*
Method dump skipped, instructions count: 230
To view this dump add '--comments-level debug' option
*/
throw new UnsupportedOperationException("Method not decompiled: androidx.fragment.app.FragmentTransition.addToFirstInLastOut(androidx.fragment.app.BackStackRecord, androidx.fragment.app.FragmentTransaction$Op, android.util.SparseArray, boolean, boolean):void");
}
private static FragmentContainerTransition ensureContainer(FragmentContainerTransition fragmentContainerTransition, SparseArray<FragmentContainerTransition> sparseArray, int i) {
if (fragmentContainerTransition != null) {
return fragmentContainerTransition;
}
FragmentContainerTransition fragmentContainerTransition2 = new FragmentContainerTransition();
sparseArray.put(i, fragmentContainerTransition2);
return fragmentContainerTransition2;
}
static class FragmentContainerTransition {
public Fragment firstOut;
public boolean firstOutIsPop;
public BackStackRecord firstOutTransaction;
public Fragment lastIn;
public boolean lastInIsPop;
public BackStackRecord lastInTransaction;
FragmentContainerTransition() {
}
}
private FragmentTransition() {
}
}

View File

@ -0,0 +1,303 @@
package androidx.fragment.app;
import android.graphics.Rect;
import android.transition.Transition;
import android.transition.TransitionManager;
import android.transition.TransitionSet;
import android.view.View;
import android.view.ViewGroup;
import androidx.core.os.CancellationSignal;
import java.util.ArrayList;
import java.util.List;
/* loaded from: classes.dex */
class FragmentTransitionCompat21 extends FragmentTransitionImpl {
FragmentTransitionCompat21() {
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public boolean canHandle(Object obj) {
return obj instanceof Transition;
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public Object cloneTransition(Object obj) {
if (obj != null) {
return ((Transition) obj).clone();
}
return null;
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public Object wrapTransitionInSet(Object obj) {
if (obj == null) {
return null;
}
TransitionSet transitionSet = new TransitionSet();
transitionSet.addTransition((Transition) obj);
return transitionSet;
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public void setSharedElementTargets(Object obj, View view, ArrayList<View> arrayList) {
TransitionSet transitionSet = (TransitionSet) obj;
List<View> targets = transitionSet.getTargets();
targets.clear();
int size = arrayList.size();
for (int i = 0; i < size; i++) {
bfsAddViewChildren(targets, arrayList.get(i));
}
targets.add(view);
arrayList.add(view);
addTargets(transitionSet, arrayList);
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public void setEpicenter(Object obj, View view) {
if (view != null) {
final Rect rect = new Rect();
getBoundsOnScreen(view, rect);
((Transition) obj).setEpicenterCallback(new Transition.EpicenterCallback() { // from class: androidx.fragment.app.FragmentTransitionCompat21.1
@Override // android.transition.Transition.EpicenterCallback
public Rect onGetEpicenter(Transition transition) {
return rect;
}
});
}
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public void addTargets(Object obj, ArrayList<View> arrayList) {
Transition transition = (Transition) obj;
if (transition == null) {
return;
}
int i = 0;
if (transition instanceof TransitionSet) {
TransitionSet transitionSet = (TransitionSet) transition;
int transitionCount = transitionSet.getTransitionCount();
while (i < transitionCount) {
addTargets(transitionSet.getTransitionAt(i), arrayList);
i++;
}
return;
}
if (hasSimpleTarget(transition) || !isNullOrEmpty(transition.getTargets())) {
return;
}
int size = arrayList.size();
while (i < size) {
transition.addTarget(arrayList.get(i));
i++;
}
}
private static boolean hasSimpleTarget(Transition transition) {
return (isNullOrEmpty(transition.getTargetIds()) && isNullOrEmpty(transition.getTargetNames()) && isNullOrEmpty(transition.getTargetTypes())) ? false : true;
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public Object mergeTransitionsTogether(Object obj, Object obj2, Object obj3) {
TransitionSet transitionSet = new TransitionSet();
if (obj != null) {
transitionSet.addTransition((Transition) obj);
}
if (obj2 != null) {
transitionSet.addTransition((Transition) obj2);
}
if (obj3 != null) {
transitionSet.addTransition((Transition) obj3);
}
return transitionSet;
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public void scheduleHideFragmentView(Object obj, final View view, final ArrayList<View> arrayList) {
((Transition) obj).addListener(new Transition.TransitionListener() { // from class: androidx.fragment.app.FragmentTransitionCompat21.2
@Override // android.transition.Transition.TransitionListener
public void onTransitionCancel(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionPause(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionResume(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionStart(Transition transition) {
transition.removeListener(this);
transition.addListener(this);
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionEnd(Transition transition) {
transition.removeListener(this);
view.setVisibility(8);
int size = arrayList.size();
for (int i = 0; i < size; i++) {
((View) arrayList.get(i)).setVisibility(0);
}
}
});
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public Object mergeTransitionsInSequence(Object obj, Object obj2, Object obj3) {
Transition transition = (Transition) obj;
Transition transition2 = (Transition) obj2;
Transition transition3 = (Transition) obj3;
if (transition != null && transition2 != null) {
transition = new TransitionSet().addTransition(transition).addTransition(transition2).setOrdering(1);
} else if (transition == null) {
transition = transition2 != null ? transition2 : null;
}
if (transition3 == null) {
return transition;
}
TransitionSet transitionSet = new TransitionSet();
if (transition != null) {
transitionSet.addTransition(transition);
}
transitionSet.addTransition(transition3);
return transitionSet;
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public void beginDelayedTransition(ViewGroup viewGroup, Object obj) {
TransitionManager.beginDelayedTransition(viewGroup, (Transition) obj);
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public void scheduleRemoveTargets(Object obj, final Object obj2, final ArrayList<View> arrayList, final Object obj3, final ArrayList<View> arrayList2, final Object obj4, final ArrayList<View> arrayList3) {
((Transition) obj).addListener(new Transition.TransitionListener() { // from class: androidx.fragment.app.FragmentTransitionCompat21.3
@Override // android.transition.Transition.TransitionListener
public void onTransitionCancel(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionPause(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionResume(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionStart(Transition transition) {
Object obj5 = obj2;
if (obj5 != null) {
FragmentTransitionCompat21.this.replaceTargets(obj5, arrayList, null);
}
Object obj6 = obj3;
if (obj6 != null) {
FragmentTransitionCompat21.this.replaceTargets(obj6, arrayList2, null);
}
Object obj7 = obj4;
if (obj7 != null) {
FragmentTransitionCompat21.this.replaceTargets(obj7, arrayList3, null);
}
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionEnd(Transition transition) {
transition.removeListener(this);
}
});
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public void setListenerForTransitionEnd(Fragment fragment, Object obj, CancellationSignal cancellationSignal, final Runnable runnable) {
((Transition) obj).addListener(new Transition.TransitionListener() { // from class: androidx.fragment.app.FragmentTransitionCompat21.4
@Override // android.transition.Transition.TransitionListener
public void onTransitionCancel(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionPause(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionResume(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionStart(Transition transition) {
}
@Override // android.transition.Transition.TransitionListener
public void onTransitionEnd(Transition transition) {
runnable.run();
}
});
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public void swapSharedElementTargets(Object obj, ArrayList<View> arrayList, ArrayList<View> arrayList2) {
TransitionSet transitionSet = (TransitionSet) obj;
if (transitionSet != null) {
transitionSet.getTargets().clear();
transitionSet.getTargets().addAll(arrayList2);
replaceTargets(transitionSet, arrayList, arrayList2);
}
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public void replaceTargets(Object obj, ArrayList<View> arrayList, ArrayList<View> arrayList2) {
List<View> targets;
Transition transition = (Transition) obj;
int i = 0;
if (transition instanceof TransitionSet) {
TransitionSet transitionSet = (TransitionSet) transition;
int transitionCount = transitionSet.getTransitionCount();
while (i < transitionCount) {
replaceTargets(transitionSet.getTransitionAt(i), arrayList, arrayList2);
i++;
}
return;
}
if (hasSimpleTarget(transition) || (targets = transition.getTargets()) == null || targets.size() != arrayList.size() || !targets.containsAll(arrayList)) {
return;
}
int size = arrayList2 == null ? 0 : arrayList2.size();
while (i < size) {
transition.addTarget(arrayList2.get(i));
i++;
}
for (int size2 = arrayList.size() - 1; size2 >= 0; size2--) {
transition.removeTarget(arrayList.get(size2));
}
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public void addTarget(Object obj, View view) {
if (obj != null) {
((Transition) obj).addTarget(view);
}
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public void removeTarget(Object obj, View view) {
if (obj != null) {
((Transition) obj).removeTarget(view);
}
}
@Override // androidx.fragment.app.FragmentTransitionImpl
public void setEpicenter(Object obj, final Rect rect) {
if (obj != null) {
((Transition) obj).setEpicenterCallback(new Transition.EpicenterCallback() { // from class: androidx.fragment.app.FragmentTransitionCompat21.5
@Override // android.transition.Transition.EpicenterCallback
public Rect onGetEpicenter(Transition transition) {
Rect rect2 = rect;
if (rect2 == null || rect2.isEmpty()) {
return null;
}
return rect;
}
});
}
}
}

View File

@ -0,0 +1,225 @@
package androidx.fragment.app;
import android.graphics.Rect;
import android.graphics.RectF;
import android.view.View;
import android.view.ViewGroup;
import androidx.core.os.CancellationSignal;
import androidx.core.view.OneShotPreDrawListener;
import androidx.core.view.ViewCompat;
import androidx.core.view.ViewGroupCompat;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
/* loaded from: classes.dex */
public abstract class FragmentTransitionImpl {
public abstract void addTarget(Object obj, View view);
public abstract void addTargets(Object obj, ArrayList<View> arrayList);
public abstract void beginDelayedTransition(ViewGroup viewGroup, Object obj);
public abstract boolean canHandle(Object obj);
public abstract Object cloneTransition(Object obj);
public abstract Object mergeTransitionsInSequence(Object obj, Object obj2, Object obj3);
public abstract Object mergeTransitionsTogether(Object obj, Object obj2, Object obj3);
public abstract void removeTarget(Object obj, View view);
public abstract void replaceTargets(Object obj, ArrayList<View> arrayList, ArrayList<View> arrayList2);
public abstract void scheduleHideFragmentView(Object obj, View view, ArrayList<View> arrayList);
public abstract void scheduleRemoveTargets(Object obj, Object obj2, ArrayList<View> arrayList, Object obj3, ArrayList<View> arrayList2, Object obj4, ArrayList<View> arrayList3);
public abstract void setEpicenter(Object obj, Rect rect);
public abstract void setEpicenter(Object obj, View view);
public abstract void setSharedElementTargets(Object obj, View view, ArrayList<View> arrayList);
public abstract void swapSharedElementTargets(Object obj, ArrayList<View> arrayList, ArrayList<View> arrayList2);
public abstract Object wrapTransitionInSet(Object obj);
protected void getBoundsOnScreen(View view, Rect rect) {
if (ViewCompat.isAttachedToWindow(view)) {
RectF rectF = new RectF();
rectF.set(0.0f, 0.0f, view.getWidth(), view.getHeight());
view.getMatrix().mapRect(rectF);
rectF.offset(view.getLeft(), view.getTop());
Object parent = view.getParent();
while (parent instanceof View) {
View view2 = (View) parent;
rectF.offset(-view2.getScrollX(), -view2.getScrollY());
view2.getMatrix().mapRect(rectF);
rectF.offset(view2.getLeft(), view2.getTop());
parent = view2.getParent();
}
view.getRootView().getLocationOnScreen(new int[2]);
rectF.offset(r1[0], r1[1]);
rect.set(Math.round(rectF.left), Math.round(rectF.top), Math.round(rectF.right), Math.round(rectF.bottom));
}
}
ArrayList<String> prepareSetNameOverridesReordered(ArrayList<View> arrayList) {
ArrayList<String> arrayList2 = new ArrayList<>();
int size = arrayList.size();
for (int i = 0; i < size; i++) {
View view = arrayList.get(i);
arrayList2.add(ViewCompat.getTransitionName(view));
ViewCompat.setTransitionName(view, null);
}
return arrayList2;
}
void setNameOverridesReordered(View view, final ArrayList<View> arrayList, final ArrayList<View> arrayList2, final ArrayList<String> arrayList3, Map<String, String> map) {
final int size = arrayList2.size();
final ArrayList arrayList4 = new ArrayList();
for (int i = 0; i < size; i++) {
View view2 = arrayList.get(i);
String transitionName = ViewCompat.getTransitionName(view2);
arrayList4.add(transitionName);
if (transitionName != null) {
ViewCompat.setTransitionName(view2, null);
String str = map.get(transitionName);
int i2 = 0;
while (true) {
if (i2 >= size) {
break;
}
if (str.equals(arrayList3.get(i2))) {
ViewCompat.setTransitionName(arrayList2.get(i2), transitionName);
break;
}
i2++;
}
}
}
OneShotPreDrawListener.add(view, new Runnable() { // from class: androidx.fragment.app.FragmentTransitionImpl.1
@Override // java.lang.Runnable
public void run() {
for (int i3 = 0; i3 < size; i3++) {
ViewCompat.setTransitionName((View) arrayList2.get(i3), (String) arrayList3.get(i3));
ViewCompat.setTransitionName((View) arrayList.get(i3), (String) arrayList4.get(i3));
}
}
});
}
void captureTransitioningViews(ArrayList<View> arrayList, View view) {
if (view.getVisibility() == 0) {
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
if (ViewGroupCompat.isTransitionGroup(viewGroup)) {
arrayList.add(viewGroup);
return;
}
int childCount = viewGroup.getChildCount();
for (int i = 0; i < childCount; i++) {
captureTransitioningViews(arrayList, viewGroup.getChildAt(i));
}
return;
}
arrayList.add(view);
}
}
void findNamedViews(Map<String, View> map, View view) {
if (view.getVisibility() == 0) {
String transitionName = ViewCompat.getTransitionName(view);
if (transitionName != null) {
map.put(transitionName, view);
}
if (view instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view;
int childCount = viewGroup.getChildCount();
for (int i = 0; i < childCount; i++) {
findNamedViews(map, viewGroup.getChildAt(i));
}
}
}
}
void setNameOverridesOrdered(View view, final ArrayList<View> arrayList, final Map<String, String> map) {
OneShotPreDrawListener.add(view, new Runnable() { // from class: androidx.fragment.app.FragmentTransitionImpl.2
@Override // java.lang.Runnable
public void run() {
int size = arrayList.size();
for (int i = 0; i < size; i++) {
View view2 = (View) arrayList.get(i);
String transitionName = ViewCompat.getTransitionName(view2);
if (transitionName != null) {
ViewCompat.setTransitionName(view2, FragmentTransitionImpl.findKeyForValue(map, transitionName));
}
}
}
});
}
public void setListenerForTransitionEnd(Fragment fragment, Object obj, CancellationSignal cancellationSignal, Runnable runnable) {
runnable.run();
}
void scheduleNameReset(ViewGroup viewGroup, final ArrayList<View> arrayList, final Map<String, String> map) {
OneShotPreDrawListener.add(viewGroup, new Runnable() { // from class: androidx.fragment.app.FragmentTransitionImpl.3
@Override // java.lang.Runnable
public void run() {
int size = arrayList.size();
for (int i = 0; i < size; i++) {
View view = (View) arrayList.get(i);
ViewCompat.setTransitionName(view, (String) map.get(ViewCompat.getTransitionName(view)));
}
}
});
}
protected static void bfsAddViewChildren(List<View> list, View view) {
int size = list.size();
if (containedBeforeIndex(list, view, size)) {
return;
}
if (ViewCompat.getTransitionName(view) != null) {
list.add(view);
}
for (int i = size; i < list.size(); i++) {
View view2 = list.get(i);
if (view2 instanceof ViewGroup) {
ViewGroup viewGroup = (ViewGroup) view2;
int childCount = viewGroup.getChildCount();
for (int i2 = 0; i2 < childCount; i2++) {
View childAt = viewGroup.getChildAt(i2);
if (!containedBeforeIndex(list, childAt, size) && ViewCompat.getTransitionName(childAt) != null) {
list.add(childAt);
}
}
}
}
}
private static boolean containedBeforeIndex(List<View> list, View view, int i) {
for (int i2 = 0; i2 < i; i2++) {
if (list.get(i2) == view) {
return true;
}
}
return false;
}
protected static boolean isNullOrEmpty(List list) {
return list == null || list.isEmpty();
}
static String findKeyForValue(Map<String, String> map, String str) {
for (Map.Entry<String, String> entry : map.entrySet()) {
if (str.equals(entry.getValue())) {
return entry.getKey();
}
}
return null;
}
}

View File

@ -0,0 +1,109 @@
package androidx.fragment.app;
import android.app.Application;
import android.content.Context;
import android.content.ContextWrapper;
import android.os.Bundle;
import androidx.lifecycle.HasDefaultViewModelProviderFactory;
import androidx.lifecycle.Lifecycle;
import androidx.lifecycle.LifecycleRegistry;
import androidx.lifecycle.SavedStateViewModelFactory;
import androidx.lifecycle.ViewModelProvider;
import androidx.lifecycle.ViewModelStore;
import androidx.lifecycle.ViewModelStoreOwner;
import androidx.lifecycle.viewmodel.CreationExtras;
import androidx.savedstate.SavedStateRegistry;
import androidx.savedstate.SavedStateRegistryController;
import androidx.savedstate.SavedStateRegistryOwner;
/* loaded from: classes.dex */
class FragmentViewLifecycleOwner implements HasDefaultViewModelProviderFactory, SavedStateRegistryOwner, ViewModelStoreOwner {
private ViewModelProvider.Factory mDefaultFactory;
private final Fragment mFragment;
private LifecycleRegistry mLifecycleRegistry = null;
private SavedStateRegistryController mSavedStateRegistryController = null;
private final ViewModelStore mViewModelStore;
@Override // androidx.lifecycle.HasDefaultViewModelProviderFactory
public /* synthetic */ CreationExtras getDefaultViewModelCreationExtras() {
CreationExtras creationExtras;
creationExtras = CreationExtras.Empty.INSTANCE;
return creationExtras;
}
boolean isInitialized() {
return this.mLifecycleRegistry != null;
}
FragmentViewLifecycleOwner(Fragment fragment, ViewModelStore viewModelStore) {
this.mFragment = fragment;
this.mViewModelStore = viewModelStore;
}
@Override // androidx.lifecycle.ViewModelStoreOwner
public ViewModelStore getViewModelStore() {
initialize();
return this.mViewModelStore;
}
void initialize() {
if (this.mLifecycleRegistry == null) {
this.mLifecycleRegistry = new LifecycleRegistry(this);
this.mSavedStateRegistryController = SavedStateRegistryController.create(this);
}
}
@Override // androidx.lifecycle.LifecycleOwner
public Lifecycle getLifecycle() {
initialize();
return this.mLifecycleRegistry;
}
void setCurrentState(Lifecycle.State state) {
this.mLifecycleRegistry.setCurrentState(state);
}
void handleLifecycleEvent(Lifecycle.Event event) {
this.mLifecycleRegistry.handleLifecycleEvent(event);
}
@Override // androidx.lifecycle.HasDefaultViewModelProviderFactory
public ViewModelProvider.Factory getDefaultViewModelProviderFactory() {
Application application;
ViewModelProvider.Factory defaultViewModelProviderFactory = this.mFragment.getDefaultViewModelProviderFactory();
if (!defaultViewModelProviderFactory.equals(this.mFragment.mDefaultFactory)) {
this.mDefaultFactory = defaultViewModelProviderFactory;
return defaultViewModelProviderFactory;
}
if (this.mDefaultFactory == null) {
Context applicationContext = this.mFragment.requireContext().getApplicationContext();
while (true) {
if (!(applicationContext instanceof ContextWrapper)) {
application = null;
break;
}
if (applicationContext instanceof Application) {
application = (Application) applicationContext;
break;
}
applicationContext = ((ContextWrapper) applicationContext).getBaseContext();
}
this.mDefaultFactory = new SavedStateViewModelFactory(application, this, this.mFragment.getArguments());
}
return this.mDefaultFactory;
}
@Override // androidx.savedstate.SavedStateRegistryOwner
public SavedStateRegistry getSavedStateRegistry() {
initialize();
return this.mSavedStateRegistryController.getSavedStateRegistry();
}
void performRestore(Bundle bundle) {
this.mSavedStateRegistryController.performRestore(bundle);
}
void performSave(Bundle bundle) {
this.mSavedStateRegistryController.performSave(bundle);
}
}

View File

@ -0,0 +1,243 @@
package androidx.fragment.app;
import android.R;
import android.content.Context;
import android.os.Bundle;
import android.os.Handler;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.view.animation.AnimationUtils;
import android.widget.AdapterView;
import android.widget.FrameLayout;
import android.widget.LinearLayout;
import android.widget.ListAdapter;
import android.widget.ListView;
import android.widget.ProgressBar;
import android.widget.TextView;
/* loaded from: classes.dex */
public class ListFragment extends Fragment {
static final int INTERNAL_EMPTY_ID = 16711681;
static final int INTERNAL_LIST_CONTAINER_ID = 16711683;
static final int INTERNAL_PROGRESS_CONTAINER_ID = 16711682;
ListAdapter mAdapter;
CharSequence mEmptyText;
View mEmptyView;
ListView mList;
View mListContainer;
boolean mListShown;
View mProgressContainer;
TextView mStandardEmptyView;
private final Handler mHandler = new Handler();
private final Runnable mRequestFocus = new Runnable() { // from class: androidx.fragment.app.ListFragment.1
@Override // java.lang.Runnable
public void run() {
ListFragment.this.mList.focusableViewAvailable(ListFragment.this.mList);
}
};
private final AdapterView.OnItemClickListener mOnClickListener = new AdapterView.OnItemClickListener() { // from class: androidx.fragment.app.ListFragment.2
@Override // android.widget.AdapterView.OnItemClickListener
public void onItemClick(AdapterView<?> adapterView, View view, int i, long j) {
ListFragment.this.onListItemClick((ListView) adapterView, view, i, j);
}
};
public ListAdapter getListAdapter() {
return this.mAdapter;
}
public void onListItemClick(ListView listView, View view, int i, long j) {
}
@Override // androidx.fragment.app.Fragment
public View onCreateView(LayoutInflater layoutInflater, ViewGroup viewGroup, Bundle bundle) {
Context requireContext = requireContext();
FrameLayout frameLayout = new FrameLayout(requireContext);
LinearLayout linearLayout = new LinearLayout(requireContext);
linearLayout.setId(INTERNAL_PROGRESS_CONTAINER_ID);
linearLayout.setOrientation(1);
linearLayout.setVisibility(8);
linearLayout.setGravity(17);
linearLayout.addView(new ProgressBar(requireContext, null, R.attr.progressBarStyleLarge), new FrameLayout.LayoutParams(-2, -2));
frameLayout.addView(linearLayout, new FrameLayout.LayoutParams(-1, -1));
FrameLayout frameLayout2 = new FrameLayout(requireContext);
frameLayout2.setId(INTERNAL_LIST_CONTAINER_ID);
TextView textView = new TextView(requireContext);
textView.setId(INTERNAL_EMPTY_ID);
textView.setGravity(17);
frameLayout2.addView(textView, new FrameLayout.LayoutParams(-1, -1));
ListView listView = new ListView(requireContext);
listView.setId(R.id.list);
listView.setDrawSelectorOnTop(false);
frameLayout2.addView(listView, new FrameLayout.LayoutParams(-1, -1));
frameLayout.addView(frameLayout2, new FrameLayout.LayoutParams(-1, -1));
frameLayout.setLayoutParams(new FrameLayout.LayoutParams(-1, -1));
return frameLayout;
}
@Override // androidx.fragment.app.Fragment
public void onViewCreated(View view, Bundle bundle) {
super.onViewCreated(view, bundle);
ensureList();
}
@Override // androidx.fragment.app.Fragment
public void onDestroyView() {
this.mHandler.removeCallbacks(this.mRequestFocus);
this.mList = null;
this.mListShown = false;
this.mListContainer = null;
this.mProgressContainer = null;
this.mEmptyView = null;
this.mStandardEmptyView = null;
super.onDestroyView();
}
public void setListAdapter(ListAdapter listAdapter) {
boolean z = this.mAdapter != null;
this.mAdapter = listAdapter;
ListView listView = this.mList;
if (listView != null) {
listView.setAdapter(listAdapter);
if (this.mListShown || z) {
return;
}
setListShown(true, requireView().getWindowToken() != null);
}
}
public void setSelection(int i) {
ensureList();
this.mList.setSelection(i);
}
public int getSelectedItemPosition() {
ensureList();
return this.mList.getSelectedItemPosition();
}
public long getSelectedItemId() {
ensureList();
return this.mList.getSelectedItemId();
}
public ListView getListView() {
ensureList();
return this.mList;
}
public void setEmptyText(CharSequence charSequence) {
ensureList();
TextView textView = this.mStandardEmptyView;
if (textView == null) {
throw new IllegalStateException("Can't be used with a custom content view");
}
textView.setText(charSequence);
if (this.mEmptyText == null) {
this.mList.setEmptyView(this.mStandardEmptyView);
}
this.mEmptyText = charSequence;
}
public void setListShown(boolean z) {
setListShown(z, true);
}
public void setListShownNoAnimation(boolean z) {
setListShown(z, false);
}
private void setListShown(boolean z, boolean z2) {
ensureList();
View view = this.mProgressContainer;
if (view == null) {
throw new IllegalStateException("Can't be used with a custom content view");
}
if (this.mListShown == z) {
return;
}
this.mListShown = z;
if (z) {
if (z2) {
view.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.fade_out));
this.mListContainer.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.fade_in));
} else {
view.clearAnimation();
this.mListContainer.clearAnimation();
}
this.mProgressContainer.setVisibility(8);
this.mListContainer.setVisibility(0);
return;
}
if (z2) {
view.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.fade_in));
this.mListContainer.startAnimation(AnimationUtils.loadAnimation(getContext(), R.anim.fade_out));
} else {
view.clearAnimation();
this.mListContainer.clearAnimation();
}
this.mProgressContainer.setVisibility(0);
this.mListContainer.setVisibility(8);
}
public final ListAdapter requireListAdapter() {
ListAdapter listAdapter = getListAdapter();
if (listAdapter != null) {
return listAdapter;
}
throw new IllegalStateException("ListFragment " + this + " does not have a ListAdapter.");
}
private void ensureList() {
if (this.mList != null) {
return;
}
View view = getView();
if (view == null) {
throw new IllegalStateException("Content view not yet created");
}
if (view instanceof ListView) {
this.mList = (ListView) view;
} else {
TextView textView = (TextView) view.findViewById(INTERNAL_EMPTY_ID);
this.mStandardEmptyView = textView;
if (textView == null) {
this.mEmptyView = view.findViewById(R.id.empty);
} else {
textView.setVisibility(8);
}
this.mProgressContainer = view.findViewById(INTERNAL_PROGRESS_CONTAINER_ID);
this.mListContainer = view.findViewById(INTERNAL_LIST_CONTAINER_ID);
View findViewById = view.findViewById(R.id.list);
if (!(findViewById instanceof ListView)) {
if (findViewById == null) {
throw new RuntimeException("Your content must have a ListView whose id attribute is 'android.R.id.list'");
}
throw new RuntimeException("Content has view with id attribute 'android.R.id.list' that is not a ListView class");
}
ListView listView = (ListView) findViewById;
this.mList = listView;
View view2 = this.mEmptyView;
if (view2 != null) {
listView.setEmptyView(view2);
} else {
CharSequence charSequence = this.mEmptyText;
if (charSequence != null) {
this.mStandardEmptyView.setText(charSequence);
this.mList.setEmptyView(this.mStandardEmptyView);
}
}
}
this.mListShown = true;
this.mList.setOnItemClickListener(this.mOnClickListener);
ListAdapter listAdapter = this.mAdapter;
if (listAdapter != null) {
this.mAdapter = null;
setListAdapter(listAdapter);
} else if (this.mProgressContainer != null) {
setListShown(false, false);
}
this.mHandler.post(this.mRequestFocus);
}
}

View File

@ -0,0 +1,44 @@
package androidx.fragment.app;
import android.util.Log;
import java.io.Writer;
/* loaded from: classes.dex */
final class LogWriter extends Writer {
private StringBuilder mBuilder = new StringBuilder(128);
private final String mTag;
LogWriter(String str) {
this.mTag = str;
}
@Override // java.io.Writer, java.io.Closeable, java.lang.AutoCloseable
public void close() {
flushBuilder();
}
@Override // java.io.Writer, java.io.Flushable
public void flush() {
flushBuilder();
}
@Override // java.io.Writer
public void write(char[] cArr, int i, int i2) {
for (int i3 = 0; i3 < i2; i3++) {
char c = cArr[i + i3];
if (c == '\n') {
flushBuilder();
} else {
this.mBuilder.append(c);
}
}
}
private void flushBuilder() {
if (this.mBuilder.length() > 0) {
Log.d(this.mTag, this.mBuilder.toString());
StringBuilder sb = this.mBuilder;
sb.delete(0, sb.length());
}
}
}

View File

@ -0,0 +1,525 @@
package androidx.fragment.app;
import android.util.Log;
import android.view.View;
import android.view.ViewGroup;
import androidx.core.os.CancellationSignal;
import androidx.core.view.ViewCompat;
import androidx.fragment.R;
import java.util.ArrayList;
import java.util.HashSet;
import java.util.Iterator;
import java.util.List;
/* loaded from: classes.dex */
abstract class SpecialEffectsController {
private final ViewGroup mContainer;
final ArrayList<Operation> mPendingOperations = new ArrayList<>();
final ArrayList<Operation> mRunningOperations = new ArrayList<>();
boolean mOperationDirectionIsPop = false;
boolean mIsContainerPostponed = false;
abstract void executeOperations(List<Operation> list, boolean z);
public ViewGroup getContainer() {
return this.mContainer;
}
void updateOperationDirection(boolean z) {
this.mOperationDirectionIsPop = z;
}
static SpecialEffectsController getOrCreateController(ViewGroup viewGroup, FragmentManager fragmentManager) {
return getOrCreateController(viewGroup, fragmentManager.getSpecialEffectsControllerFactory());
}
static SpecialEffectsController getOrCreateController(ViewGroup viewGroup, SpecialEffectsControllerFactory specialEffectsControllerFactory) {
Object tag = viewGroup.getTag(R.id.special_effects_controller_view_tag);
if (tag instanceof SpecialEffectsController) {
return (SpecialEffectsController) tag;
}
SpecialEffectsController createController = specialEffectsControllerFactory.createController(viewGroup);
viewGroup.setTag(R.id.special_effects_controller_view_tag, createController);
return createController;
}
SpecialEffectsController(ViewGroup viewGroup) {
this.mContainer = viewGroup;
}
Operation.LifecycleImpact getAwaitingCompletionLifecycleImpact(FragmentStateManager fragmentStateManager) {
Operation findPendingOperation = findPendingOperation(fragmentStateManager.getFragment());
Operation.LifecycleImpact lifecycleImpact = findPendingOperation != null ? findPendingOperation.getLifecycleImpact() : null;
Operation findRunningOperation = findRunningOperation(fragmentStateManager.getFragment());
return (findRunningOperation == null || !(lifecycleImpact == null || lifecycleImpact == Operation.LifecycleImpact.NONE)) ? lifecycleImpact : findRunningOperation.getLifecycleImpact();
}
private Operation findPendingOperation(Fragment fragment) {
Iterator<Operation> it = this.mPendingOperations.iterator();
while (it.hasNext()) {
Operation next = it.next();
if (next.getFragment().equals(fragment) && !next.isCanceled()) {
return next;
}
}
return null;
}
private Operation findRunningOperation(Fragment fragment) {
Iterator<Operation> it = this.mRunningOperations.iterator();
while (it.hasNext()) {
Operation next = it.next();
if (next.getFragment().equals(fragment) && !next.isCanceled()) {
return next;
}
}
return null;
}
void enqueueAdd(Operation.State state, FragmentStateManager fragmentStateManager) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: Enqueuing add operation for fragment " + fragmentStateManager.getFragment());
}
enqueue(state, Operation.LifecycleImpact.ADDING, fragmentStateManager);
}
void enqueueShow(FragmentStateManager fragmentStateManager) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: Enqueuing show operation for fragment " + fragmentStateManager.getFragment());
}
enqueue(Operation.State.VISIBLE, Operation.LifecycleImpact.NONE, fragmentStateManager);
}
void enqueueHide(FragmentStateManager fragmentStateManager) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: Enqueuing hide operation for fragment " + fragmentStateManager.getFragment());
}
enqueue(Operation.State.GONE, Operation.LifecycleImpact.NONE, fragmentStateManager);
}
void enqueueRemove(FragmentStateManager fragmentStateManager) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: Enqueuing remove operation for fragment " + fragmentStateManager.getFragment());
}
enqueue(Operation.State.REMOVED, Operation.LifecycleImpact.REMOVING, fragmentStateManager);
}
private void enqueue(Operation.State state, Operation.LifecycleImpact lifecycleImpact, FragmentStateManager fragmentStateManager) {
synchronized (this.mPendingOperations) {
CancellationSignal cancellationSignal = new CancellationSignal();
Operation findPendingOperation = findPendingOperation(fragmentStateManager.getFragment());
if (findPendingOperation != null) {
findPendingOperation.mergeWith(state, lifecycleImpact);
return;
}
final FragmentStateManagerOperation fragmentStateManagerOperation = new FragmentStateManagerOperation(state, lifecycleImpact, fragmentStateManager, cancellationSignal);
this.mPendingOperations.add(fragmentStateManagerOperation);
fragmentStateManagerOperation.addCompletionListener(new Runnable() { // from class: androidx.fragment.app.SpecialEffectsController.1
@Override // java.lang.Runnable
public void run() {
if (SpecialEffectsController.this.mPendingOperations.contains(fragmentStateManagerOperation)) {
fragmentStateManagerOperation.getFinalState().applyState(fragmentStateManagerOperation.getFragment().mView);
}
}
});
fragmentStateManagerOperation.addCompletionListener(new Runnable() { // from class: androidx.fragment.app.SpecialEffectsController.2
@Override // java.lang.Runnable
public void run() {
SpecialEffectsController.this.mPendingOperations.remove(fragmentStateManagerOperation);
SpecialEffectsController.this.mRunningOperations.remove(fragmentStateManagerOperation);
}
});
}
}
void markPostponedState() {
synchronized (this.mPendingOperations) {
updateFinalState();
this.mIsContainerPostponed = false;
int size = this.mPendingOperations.size() - 1;
while (true) {
if (size < 0) {
break;
}
Operation operation = this.mPendingOperations.get(size);
Operation.State from = Operation.State.from(operation.getFragment().mView);
if (operation.getFinalState() == Operation.State.VISIBLE && from != Operation.State.VISIBLE) {
this.mIsContainerPostponed = operation.getFragment().isPostponed();
break;
}
size--;
}
}
}
void forcePostponedExecutePendingOperations() {
if (this.mIsContainerPostponed) {
this.mIsContainerPostponed = false;
executePendingOperations();
}
}
void executePendingOperations() {
if (this.mIsContainerPostponed) {
return;
}
if (!ViewCompat.isAttachedToWindow(this.mContainer)) {
forceCompleteAllOperations();
this.mOperationDirectionIsPop = false;
return;
}
synchronized (this.mPendingOperations) {
if (!this.mPendingOperations.isEmpty()) {
ArrayList arrayList = new ArrayList(this.mRunningOperations);
this.mRunningOperations.clear();
Iterator it = arrayList.iterator();
while (it.hasNext()) {
Operation operation = (Operation) it.next();
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: Cancelling operation " + operation);
}
operation.cancel();
if (!operation.isComplete()) {
this.mRunningOperations.add(operation);
}
}
updateFinalState();
ArrayList arrayList2 = new ArrayList(this.mPendingOperations);
this.mPendingOperations.clear();
this.mRunningOperations.addAll(arrayList2);
Iterator it2 = arrayList2.iterator();
while (it2.hasNext()) {
((Operation) it2.next()).onStart();
}
executeOperations(arrayList2, this.mOperationDirectionIsPop);
this.mOperationDirectionIsPop = false;
}
}
}
void forceCompleteAllOperations() {
String str;
String str2;
boolean isAttachedToWindow = ViewCompat.isAttachedToWindow(this.mContainer);
synchronized (this.mPendingOperations) {
updateFinalState();
Iterator<Operation> it = this.mPendingOperations.iterator();
while (it.hasNext()) {
it.next().onStart();
}
Iterator it2 = new ArrayList(this.mRunningOperations).iterator();
while (it2.hasNext()) {
Operation operation = (Operation) it2.next();
if (FragmentManager.isLoggingEnabled(2)) {
StringBuilder sb = new StringBuilder();
sb.append("SpecialEffectsController: ");
if (isAttachedToWindow) {
str2 = "";
} else {
str2 = "Container " + this.mContainer + " is not attached to window. ";
}
sb.append(str2);
sb.append("Cancelling running operation ");
sb.append(operation);
Log.v("FragmentManager", sb.toString());
}
operation.cancel();
}
Iterator it3 = new ArrayList(this.mPendingOperations).iterator();
while (it3.hasNext()) {
Operation operation2 = (Operation) it3.next();
if (FragmentManager.isLoggingEnabled(2)) {
StringBuilder sb2 = new StringBuilder();
sb2.append("SpecialEffectsController: ");
if (isAttachedToWindow) {
str = "";
} else {
str = "Container " + this.mContainer + " is not attached to window. ";
}
sb2.append(str);
sb2.append("Cancelling pending operation ");
sb2.append(operation2);
Log.v("FragmentManager", sb2.toString());
}
operation2.cancel();
}
}
}
private void updateFinalState() {
Iterator<Operation> it = this.mPendingOperations.iterator();
while (it.hasNext()) {
Operation next = it.next();
if (next.getLifecycleImpact() == Operation.LifecycleImpact.ADDING) {
next.mergeWith(Operation.State.from(next.getFragment().requireView().getVisibility()), Operation.LifecycleImpact.NONE);
}
}
}
static class Operation {
private State mFinalState;
private final Fragment mFragment;
private LifecycleImpact mLifecycleImpact;
private final List<Runnable> mCompletionListeners = new ArrayList();
private final HashSet<CancellationSignal> mSpecialEffectsSignals = new HashSet<>();
private boolean mIsCanceled = false;
private boolean mIsComplete = false;
enum LifecycleImpact {
NONE,
ADDING,
REMOVING
}
public State getFinalState() {
return this.mFinalState;
}
public final Fragment getFragment() {
return this.mFragment;
}
LifecycleImpact getLifecycleImpact() {
return this.mLifecycleImpact;
}
final boolean isCanceled() {
return this.mIsCanceled;
}
final boolean isComplete() {
return this.mIsComplete;
}
void onStart() {
}
enum State {
REMOVED,
VISIBLE,
GONE,
INVISIBLE;
static State from(View view) {
return (view.getAlpha() == 0.0f && view.getVisibility() == 0) ? INVISIBLE : from(view.getVisibility());
}
static State from(int i) {
if (i == 0) {
return VISIBLE;
}
if (i == 4) {
return INVISIBLE;
}
if (i == 8) {
return GONE;
}
throw new IllegalArgumentException("Unknown visibility " + i);
}
void applyState(View view) {
int i = AnonymousClass3.$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State[ordinal()];
if (i == 1) {
ViewGroup viewGroup = (ViewGroup) view.getParent();
if (viewGroup != null) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: Removing view " + view + " from container " + viewGroup);
}
viewGroup.removeView(view);
return;
}
return;
}
if (i == 2) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: Setting view " + view + " to VISIBLE");
}
view.setVisibility(0);
return;
}
if (i == 3) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: Setting view " + view + " to GONE");
}
view.setVisibility(8);
return;
}
if (i != 4) {
return;
}
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: Setting view " + view + " to INVISIBLE");
}
view.setVisibility(4);
}
}
Operation(State state, LifecycleImpact lifecycleImpact, Fragment fragment, CancellationSignal cancellationSignal) {
this.mFinalState = state;
this.mLifecycleImpact = lifecycleImpact;
this.mFragment = fragment;
cancellationSignal.setOnCancelListener(new CancellationSignal.OnCancelListener() { // from class: androidx.fragment.app.SpecialEffectsController.Operation.1
@Override // androidx.core.os.CancellationSignal.OnCancelListener
public void onCancel() {
Operation.this.cancel();
}
});
}
public String toString() {
return "Operation {" + Integer.toHexString(System.identityHashCode(this)) + "} {mFinalState = " + this.mFinalState + "} {mLifecycleImpact = " + this.mLifecycleImpact + "} {mFragment = " + this.mFragment + "}";
}
final void cancel() {
if (isCanceled()) {
return;
}
this.mIsCanceled = true;
if (this.mSpecialEffectsSignals.isEmpty()) {
complete();
return;
}
Iterator it = new ArrayList(this.mSpecialEffectsSignals).iterator();
while (it.hasNext()) {
((CancellationSignal) it.next()).cancel();
}
}
final void mergeWith(State state, LifecycleImpact lifecycleImpact) {
int i = AnonymousClass3.$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$LifecycleImpact[lifecycleImpact.ordinal()];
if (i == 1) {
if (this.mFinalState == State.REMOVED) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: For fragment " + this.mFragment + " mFinalState = REMOVED -> VISIBLE. mLifecycleImpact = " + this.mLifecycleImpact + " to ADDING.");
}
this.mFinalState = State.VISIBLE;
this.mLifecycleImpact = LifecycleImpact.ADDING;
return;
}
return;
}
if (i == 2) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: For fragment " + this.mFragment + " mFinalState = " + this.mFinalState + " -> REMOVED. mLifecycleImpact = " + this.mLifecycleImpact + " to REMOVING.");
}
this.mFinalState = State.REMOVED;
this.mLifecycleImpact = LifecycleImpact.REMOVING;
return;
}
if (i == 3 && this.mFinalState != State.REMOVED) {
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: For fragment " + this.mFragment + " mFinalState = " + this.mFinalState + " -> " + state + ". ");
}
this.mFinalState = state;
}
}
final void addCompletionListener(Runnable runnable) {
this.mCompletionListeners.add(runnable);
}
public final void markStartedSpecialEffect(CancellationSignal cancellationSignal) {
onStart();
this.mSpecialEffectsSignals.add(cancellationSignal);
}
public final void completeSpecialEffect(CancellationSignal cancellationSignal) {
if (this.mSpecialEffectsSignals.remove(cancellationSignal) && this.mSpecialEffectsSignals.isEmpty()) {
complete();
}
}
public void complete() {
if (this.mIsComplete) {
return;
}
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "SpecialEffectsController: " + this + " has called complete.");
}
this.mIsComplete = true;
Iterator<Runnable> it = this.mCompletionListeners.iterator();
while (it.hasNext()) {
it.next().run();
}
}
}
/* renamed from: androidx.fragment.app.SpecialEffectsController$3, reason: invalid class name */
static /* synthetic */ class AnonymousClass3 {
static final /* synthetic */ int[] $SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$LifecycleImpact;
static final /* synthetic */ int[] $SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State;
static {
int[] iArr = new int[Operation.LifecycleImpact.values().length];
$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$LifecycleImpact = iArr;
try {
iArr[Operation.LifecycleImpact.ADDING.ordinal()] = 1;
} catch (NoSuchFieldError unused) {
}
try {
$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$LifecycleImpact[Operation.LifecycleImpact.REMOVING.ordinal()] = 2;
} catch (NoSuchFieldError unused2) {
}
try {
$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$LifecycleImpact[Operation.LifecycleImpact.NONE.ordinal()] = 3;
} catch (NoSuchFieldError unused3) {
}
int[] iArr2 = new int[Operation.State.values().length];
$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State = iArr2;
try {
iArr2[Operation.State.REMOVED.ordinal()] = 1;
} catch (NoSuchFieldError unused4) {
}
try {
$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State[Operation.State.VISIBLE.ordinal()] = 2;
} catch (NoSuchFieldError unused5) {
}
try {
$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State[Operation.State.GONE.ordinal()] = 3;
} catch (NoSuchFieldError unused6) {
}
try {
$SwitchMap$androidx$fragment$app$SpecialEffectsController$Operation$State[Operation.State.INVISIBLE.ordinal()] = 4;
} catch (NoSuchFieldError unused7) {
}
}
}
private static class FragmentStateManagerOperation extends Operation {
private final FragmentStateManager mFragmentStateManager;
FragmentStateManagerOperation(Operation.State state, Operation.LifecycleImpact lifecycleImpact, FragmentStateManager fragmentStateManager, CancellationSignal cancellationSignal) {
super(state, lifecycleImpact, fragmentStateManager.getFragment(), cancellationSignal);
this.mFragmentStateManager = fragmentStateManager;
}
@Override // androidx.fragment.app.SpecialEffectsController.Operation
void onStart() {
if (getLifecycleImpact() == Operation.LifecycleImpact.ADDING) {
Fragment fragment = this.mFragmentStateManager.getFragment();
View findFocus = fragment.mView.findFocus();
if (findFocus != null) {
fragment.setFocusedView(findFocus);
if (FragmentManager.isLoggingEnabled(2)) {
Log.v("FragmentManager", "requestFocus: Saved focused view " + findFocus + " for Fragment " + fragment);
}
}
View requireView = getFragment().requireView();
if (requireView.getParent() == null) {
this.mFragmentStateManager.addViewToContainer();
requireView.setAlpha(0.0f);
}
if (requireView.getAlpha() == 0.0f && requireView.getVisibility() == 0) {
requireView.setVisibility(4);
}
requireView.setAlpha(fragment.getPostOnViewCreatedAlpha());
}
}
@Override // androidx.fragment.app.SpecialEffectsController.Operation
public void complete() {
super.complete();
this.mFragmentStateManager.moveToExpectedState();
}
}
}

View File

@ -0,0 +1,8 @@
package androidx.fragment.app;
import android.view.ViewGroup;
/* loaded from: classes.dex */
interface SpecialEffectsControllerFactory {
SpecialEffectsController createController(ViewGroup viewGroup);
}

View File

@ -0,0 +1,10 @@
package androidx.fragment.app;
import android.util.AndroidRuntimeException;
/* loaded from: classes.dex */
final class SuperNotCalledException extends AndroidRuntimeException {
public SuperNotCalledException(String str) {
super(str);
}
}