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;
|
|
}
|
|
}
|