350 lines
12 KiB
Java
350 lines
12 KiB
Java
package androidx.appcompat.app;
|
|
|
|
import android.content.Context;
|
|
import android.content.Intent;
|
|
import android.content.res.Configuration;
|
|
import android.content.res.Resources;
|
|
import android.os.Build;
|
|
import android.os.Bundle;
|
|
import android.view.KeyEvent;
|
|
import android.view.Menu;
|
|
import android.view.MenuInflater;
|
|
import android.view.MenuItem;
|
|
import android.view.View;
|
|
import android.view.ViewGroup;
|
|
import android.view.Window;
|
|
import androidx.annotation.CallSuper;
|
|
import androidx.annotation.ContentView;
|
|
import androidx.annotation.IdRes;
|
|
import androidx.annotation.LayoutRes;
|
|
import androidx.annotation.NonNull;
|
|
import androidx.annotation.Nullable;
|
|
import androidx.annotation.StyleRes;
|
|
import androidx.appcompat.app.ActionBarDrawerToggle;
|
|
import androidx.appcompat.view.ActionMode;
|
|
import androidx.appcompat.widget.Toolbar;
|
|
import androidx.appcompat.widget.VectorEnabledTintResources;
|
|
import androidx.core.app.ActivityCompat;
|
|
import androidx.core.app.NavUtils;
|
|
import androidx.core.app.TaskStackBuilder;
|
|
import androidx.fragment.app.FragmentActivity;
|
|
public class AppCompatActivity extends FragmentActivity implements AppCompatCallback, TaskStackBuilder.SupportParentable, ActionBarDrawerToggle.DelegateProvider {
|
|
private AppCompatDelegate mDelegate;
|
|
private Resources mResources;
|
|
|
|
public AppCompatActivity() {
|
|
}
|
|
|
|
@ContentView
|
|
public AppCompatActivity(@LayoutRes int i) {
|
|
super(i);
|
|
}
|
|
|
|
private boolean performMenuItemShortcut(KeyEvent keyEvent) {
|
|
Window window;
|
|
return Build.VERSION.SDK_INT < 26 && !keyEvent.isCtrlPressed() && !KeyEvent.metaStateHasNoModifiers(keyEvent.getMetaState()) && keyEvent.getRepeatCount() == 0 && !KeyEvent.isModifierKey(keyEvent.getKeyCode()) && (window = getWindow()) != null && window.getDecorView() != null && window.getDecorView().dispatchKeyShortcutEvent(keyEvent);
|
|
}
|
|
|
|
@Override // androidx.activity.ComponentActivity, android.app.Activity
|
|
public void addContentView(View view, ViewGroup.LayoutParams layoutParams) {
|
|
getDelegate().addContentView(view, layoutParams);
|
|
}
|
|
|
|
@Override // android.app.Activity, android.view.ContextThemeWrapper, android.content.ContextWrapper
|
|
public void attachBaseContext(Context context) {
|
|
super.attachBaseContext(getDelegate().attachBaseContext2(context));
|
|
}
|
|
|
|
@Override // android.app.Activity
|
|
public void closeOptionsMenu() {
|
|
ActionBar supportActionBar = getSupportActionBar();
|
|
if (!getWindow().hasFeature(0)) {
|
|
return;
|
|
}
|
|
if (supportActionBar == null || !supportActionBar.closeOptionsMenu()) {
|
|
super.closeOptionsMenu();
|
|
}
|
|
}
|
|
|
|
@Override // androidx.core.app.ComponentActivity, android.app.Activity, android.view.Window.Callback
|
|
public boolean dispatchKeyEvent(KeyEvent keyEvent) {
|
|
int keyCode = keyEvent.getKeyCode();
|
|
ActionBar supportActionBar = getSupportActionBar();
|
|
if (keyCode != 82 || supportActionBar == null || !supportActionBar.onMenuKeyEvent(keyEvent)) {
|
|
return super.dispatchKeyEvent(keyEvent);
|
|
}
|
|
return true;
|
|
}
|
|
|
|
@Override // android.app.Activity
|
|
public <T extends View> T findViewById(@IdRes int i) {
|
|
return (T) getDelegate().findViewById(i);
|
|
}
|
|
|
|
@NonNull
|
|
public AppCompatDelegate getDelegate() {
|
|
if (this.mDelegate == null) {
|
|
this.mDelegate = AppCompatDelegate.create(this, this);
|
|
}
|
|
return this.mDelegate;
|
|
}
|
|
|
|
@Override // androidx.appcompat.app.ActionBarDrawerToggle.DelegateProvider
|
|
@Nullable
|
|
public ActionBarDrawerToggle.Delegate getDrawerToggleDelegate() {
|
|
return getDelegate().getDrawerToggleDelegate();
|
|
}
|
|
|
|
@Override // android.app.Activity
|
|
@NonNull
|
|
public MenuInflater getMenuInflater() {
|
|
return getDelegate().getMenuInflater();
|
|
}
|
|
|
|
@Override // android.content.Context, android.view.ContextThemeWrapper, android.content.ContextWrapper
|
|
public Resources getResources() {
|
|
if (this.mResources == null && VectorEnabledTintResources.shouldBeUsed()) {
|
|
this.mResources = new VectorEnabledTintResources(this, super.getResources());
|
|
}
|
|
Resources resources = this.mResources;
|
|
return resources == null ? super.getResources() : resources;
|
|
}
|
|
|
|
@Nullable
|
|
public ActionBar getSupportActionBar() {
|
|
return getDelegate().getSupportActionBar();
|
|
}
|
|
|
|
@Override // androidx.core.app.TaskStackBuilder.SupportParentable
|
|
@Nullable
|
|
public Intent getSupportParentActivityIntent() {
|
|
return NavUtils.getParentActivityIntent(this);
|
|
}
|
|
|
|
@Override // android.app.Activity
|
|
public void invalidateOptionsMenu() {
|
|
getDelegate().invalidateOptionsMenu();
|
|
}
|
|
|
|
@Override // androidx.fragment.app.FragmentActivity, android.app.Activity, android.content.ComponentCallbacks
|
|
public void onConfigurationChanged(@NonNull Configuration configuration) {
|
|
super.onConfigurationChanged(configuration);
|
|
if (this.mResources != null) {
|
|
this.mResources.updateConfiguration(configuration, super.getResources().getDisplayMetrics());
|
|
}
|
|
getDelegate().onConfigurationChanged(configuration);
|
|
}
|
|
|
|
@Override // android.app.Activity, android.view.Window.Callback
|
|
public void onContentChanged() {
|
|
onSupportContentChanged();
|
|
}
|
|
|
|
@Override // androidx.fragment.app.FragmentActivity, androidx.activity.ComponentActivity, androidx.core.app.ComponentActivity, android.app.Activity
|
|
public void onCreate(@Nullable Bundle bundle) {
|
|
AppCompatDelegate delegate = getDelegate();
|
|
delegate.installViewFactory();
|
|
delegate.onCreate(bundle);
|
|
super.onCreate(bundle);
|
|
}
|
|
|
|
public void onCreateSupportNavigateUpTaskStack(@NonNull TaskStackBuilder taskStackBuilder) {
|
|
taskStackBuilder.addParentStack(this);
|
|
}
|
|
|
|
@Override // androidx.fragment.app.FragmentActivity, android.app.Activity
|
|
public void onDestroy() {
|
|
super.onDestroy();
|
|
getDelegate().onDestroy();
|
|
}
|
|
|
|
@Override // android.app.Activity, android.view.KeyEvent.Callback
|
|
public boolean onKeyDown(int i, KeyEvent keyEvent) {
|
|
if (performMenuItemShortcut(keyEvent)) {
|
|
return true;
|
|
}
|
|
return super.onKeyDown(i, keyEvent);
|
|
}
|
|
|
|
@Override // androidx.fragment.app.FragmentActivity, android.app.Activity, android.view.Window.Callback
|
|
public final boolean onMenuItemSelected(int i, @NonNull MenuItem menuItem) {
|
|
if (super.onMenuItemSelected(i, menuItem)) {
|
|
return true;
|
|
}
|
|
ActionBar supportActionBar = getSupportActionBar();
|
|
if (menuItem.getItemId() != 16908332 || supportActionBar == null || (supportActionBar.getDisplayOptions() & 4) == 0) {
|
|
return false;
|
|
}
|
|
return onSupportNavigateUp();
|
|
}
|
|
|
|
@Override // android.app.Activity, android.view.Window.Callback
|
|
public boolean onMenuOpened(int i, Menu menu) {
|
|
return super.onMenuOpened(i, menu);
|
|
}
|
|
|
|
public void onNightModeChanged(int i) {
|
|
}
|
|
|
|
@Override // androidx.fragment.app.FragmentActivity, android.app.Activity, android.view.Window.Callback
|
|
public void onPanelClosed(int i, @NonNull Menu menu) {
|
|
super.onPanelClosed(i, menu);
|
|
}
|
|
|
|
@Override // android.app.Activity
|
|
public void onPostCreate(@Nullable Bundle bundle) {
|
|
super.onPostCreate(bundle);
|
|
getDelegate().onPostCreate(bundle);
|
|
}
|
|
|
|
@Override // androidx.fragment.app.FragmentActivity, android.app.Activity
|
|
public void onPostResume() {
|
|
super.onPostResume();
|
|
getDelegate().onPostResume();
|
|
}
|
|
|
|
public void onPrepareSupportNavigateUpTaskStack(@NonNull TaskStackBuilder taskStackBuilder) {
|
|
}
|
|
|
|
@Override // androidx.activity.ComponentActivity, androidx.core.app.ComponentActivity, android.app.Activity
|
|
public void onSaveInstanceState(@NonNull Bundle bundle) {
|
|
super.onSaveInstanceState(bundle);
|
|
getDelegate().onSaveInstanceState(bundle);
|
|
}
|
|
|
|
@Override // androidx.fragment.app.FragmentActivity, android.app.Activity
|
|
public void onStart() {
|
|
super.onStart();
|
|
getDelegate().onStart();
|
|
}
|
|
|
|
@Override // androidx.fragment.app.FragmentActivity, android.app.Activity
|
|
public void onStop() {
|
|
super.onStop();
|
|
getDelegate().onStop();
|
|
}
|
|
|
|
@Override // androidx.appcompat.app.AppCompatCallback
|
|
@CallSuper
|
|
public void onSupportActionModeFinished(@NonNull ActionMode actionMode) {
|
|
}
|
|
|
|
@Override // androidx.appcompat.app.AppCompatCallback
|
|
@CallSuper
|
|
public void onSupportActionModeStarted(@NonNull ActionMode actionMode) {
|
|
}
|
|
|
|
@Deprecated
|
|
public void onSupportContentChanged() {
|
|
}
|
|
|
|
public boolean onSupportNavigateUp() {
|
|
Intent supportParentActivityIntent = getSupportParentActivityIntent();
|
|
if (supportParentActivityIntent == null) {
|
|
return false;
|
|
}
|
|
if (supportShouldUpRecreateTask(supportParentActivityIntent)) {
|
|
TaskStackBuilder create = TaskStackBuilder.create(this);
|
|
onCreateSupportNavigateUpTaskStack(create);
|
|
onPrepareSupportNavigateUpTaskStack(create);
|
|
create.startActivities();
|
|
try {
|
|
ActivityCompat.finishAffinity(this);
|
|
return true;
|
|
} catch (IllegalStateException unused) {
|
|
finish();
|
|
return true;
|
|
}
|
|
} else {
|
|
supportNavigateUpTo(supportParentActivityIntent);
|
|
return true;
|
|
}
|
|
}
|
|
|
|
@Override // android.app.Activity
|
|
public void onTitleChanged(CharSequence charSequence, int i) {
|
|
super.onTitleChanged(charSequence, i);
|
|
getDelegate().setTitle(charSequence);
|
|
}
|
|
|
|
@Override // androidx.appcompat.app.AppCompatCallback
|
|
@Nullable
|
|
public ActionMode onWindowStartingSupportActionMode(@NonNull ActionMode.Callback callback) {
|
|
return null;
|
|
}
|
|
|
|
@Override // android.app.Activity
|
|
public void openOptionsMenu() {
|
|
ActionBar supportActionBar = getSupportActionBar();
|
|
if (!getWindow().hasFeature(0)) {
|
|
return;
|
|
}
|
|
if (supportActionBar == null || !supportActionBar.openOptionsMenu()) {
|
|
super.openOptionsMenu();
|
|
}
|
|
}
|
|
|
|
@Override // androidx.activity.ComponentActivity, android.app.Activity
|
|
public void setContentView(@LayoutRes int i) {
|
|
getDelegate().setContentView(i);
|
|
}
|
|
|
|
@Override // androidx.activity.ComponentActivity, android.app.Activity
|
|
public void setContentView(View view) {
|
|
getDelegate().setContentView(view);
|
|
}
|
|
|
|
@Override // androidx.activity.ComponentActivity, android.app.Activity
|
|
public void setContentView(View view, ViewGroup.LayoutParams layoutParams) {
|
|
getDelegate().setContentView(view, layoutParams);
|
|
}
|
|
|
|
public void setSupportActionBar(@Nullable Toolbar toolbar) {
|
|
getDelegate().setSupportActionBar(toolbar);
|
|
}
|
|
|
|
@Deprecated
|
|
public void setSupportProgress(int i) {
|
|
}
|
|
|
|
@Deprecated
|
|
public void setSupportProgressBarIndeterminate(boolean z2) {
|
|
}
|
|
|
|
@Deprecated
|
|
public void setSupportProgressBarIndeterminateVisibility(boolean z2) {
|
|
}
|
|
|
|
@Deprecated
|
|
public void setSupportProgressBarVisibility(boolean z2) {
|
|
}
|
|
|
|
@Override // android.app.Activity, android.content.Context, android.view.ContextThemeWrapper, android.content.ContextWrapper
|
|
public void setTheme(@StyleRes int i) {
|
|
super.setTheme(i);
|
|
getDelegate().setTheme(i);
|
|
}
|
|
|
|
@Nullable
|
|
public ActionMode startSupportActionMode(@NonNull ActionMode.Callback callback) {
|
|
return getDelegate().startSupportActionMode(callback);
|
|
}
|
|
|
|
@Override // androidx.fragment.app.FragmentActivity
|
|
public void supportInvalidateOptionsMenu() {
|
|
getDelegate().invalidateOptionsMenu();
|
|
}
|
|
|
|
public void supportNavigateUpTo(@NonNull Intent intent) {
|
|
NavUtils.navigateUpTo(this, intent);
|
|
}
|
|
|
|
public boolean supportRequestWindowFeature(int i) {
|
|
return getDelegate().requestWindowFeature(i);
|
|
}
|
|
|
|
public boolean supportShouldUpRecreateTask(@NonNull Intent intent) {
|
|
return NavUtils.shouldUpRecreateTask(this, intent);
|
|
}
|
|
}
|