448 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
			
		
		
	
	
			448 lines
		
	
	
		
			18 KiB
		
	
	
	
		
			Java
		
	
	
	
	
	
| 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;
 | |
|     }
 | |
| }
 |