Settings Fragment Migration (Build pass app)

This patch focused on fixing compile errors and some runtime errors.

Test: We can't test it now. But we will have an integration test later.
Bug: 110259478
Change-Id: I16c471ddcd0fa1460c665b7f74d86fcace5ee67b
diff --git a/proguard.flags b/proguard.flags
index 7592370..298058d 100644
--- a/proguard.flags
+++ b/proguard.flags
@@ -6,7 +6,7 @@
 -keepattributes Exceptions
 
 # Keep all Fragments in this package, which are used by reflection.
--keep public class com.android.settings.** extends android.app.Fragment
+-keep public class com.android.settings.** extends androidx.fragment.app.Fragment
 
 # Keep all preference controllers needed by slice and DashboardFragment.
 -keep class * extends com.android.settings.core.BasePreferenceController {
diff --git a/res/values/themes.xml b/res/values/themes.xml
index 53aa026..991bf47 100644
--- a/res/values/themes.xml
+++ b/res/values/themes.xml
@@ -239,8 +239,8 @@
 
         <item name="preferenceBackgroundColor">@drawable/preference_background</item>
 
-        <!-- For all Alert Dialogs -->
-        <item name="android:alertDialogTheme">@style/Theme.AlertDialog</item>
+        <!-- For all androidx version of AlertDialogs -->
+        <item name="alertDialogTheme">@style/Theme.AppCompat.Light.Dialog.Alert</item>
 
         <item name="*android:lockPatternStyle">@style/LockPatternStyle.Setup</item>
 
diff --git a/src/com/android/settings/BugreportPreference.java b/src/com/android/settings/BugreportPreference.java
index 6371e3a..d2b5ec1 100644
--- a/src/com/android/settings/BugreportPreference.java
+++ b/src/com/android/settings/BugreportPreference.java
@@ -17,7 +17,6 @@
 package com.android.settings;
 
 import android.app.ActivityManager;
-import android.app.AlertDialog.Builder;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.os.RemoteException;
@@ -29,9 +28,11 @@
 
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settingslib.CustomDialogPreference;
+import com.android.settingslib.CustomDialogPreferenceCompat;
 
-public class BugreportPreference extends CustomDialogPreference {
+import androidx.appcompat.app.AlertDialog.Builder;
+
+public class BugreportPreference extends CustomDialogPreferenceCompat {
 
     private static final String TAG = "BugreportPreference";
 
diff --git a/src/com/android/settings/CredentialStorage.java b/src/com/android/settings/CredentialStorage.java
index 4bcf656..7b39e4f 100644
--- a/src/com/android/settings/CredentialStorage.java
+++ b/src/com/android/settings/CredentialStorage.java
@@ -49,6 +49,7 @@
 import java.io.ByteArrayInputStream;
 import java.io.IOException;
 
+import androidx.fragment.app.FragmentActivity;
 import sun.security.util.ObjectIdentifier;
 import sun.security.x509.AlgorithmId;
 
@@ -88,7 +89,7 @@
  * Action:   normal unlock/install
  * Notes:    this is the common case
  */
-public final class CredentialStorage extends Activity {
+public final class CredentialStorage extends FragmentActivity {
 
     private static final String TAG = "CredentialStorage";
 
@@ -160,7 +161,7 @@
             case UNLOCKED: {
                 if (isActivePasswordQualityInsufficient()) {
                     final ConfigureKeyGuardDialog dialog = new ConfigureKeyGuardDialog();
-                    dialog.show(getFragmentManager(), ConfigureKeyGuardDialog.TAG);
+                    dialog.show(getSupportFragmentManager(), ConfigureKeyGuardDialog.TAG);
                     return;
                 }
                 installIfAvailable();
@@ -180,7 +181,7 @@
         if (isActivePasswordQualityInsufficient()) {
             // key guard not setup, doing so will initialize keystore
             final ConfigureKeyGuardDialog dialog = new ConfigureKeyGuardDialog();
-            dialog.show(getFragmentManager(), ConfigureKeyGuardDialog.TAG);
+            dialog.show(getSupportFragmentManager(), ConfigureKeyGuardDialog.TAG);
             // will return to onResume after Activity
             return;
         }
diff --git a/src/com/android/settings/CustomListPreference.java b/src/com/android/settings/CustomListPreference.java
index 9047752..8838c10 100644
--- a/src/com/android/settings/CustomListPreference.java
+++ b/src/com/android/settings/CustomListPreference.java
@@ -28,9 +28,11 @@
 import com.android.internal.logging.nano.MetricsProto;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
+import androidx.appcompat.app.AlertDialog.Builder;
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentTransaction;
 import androidx.preference.ListPreference;
+import androidx.preference.ListPreferenceDialogFragmentCompat;
 
 public class CustomListPreference extends ListPreference {
 
@@ -43,7 +45,7 @@
         super(context, attrs, defStyleAttr, defStyleRes);
     }
 
-    protected void onPrepareDialogBuilder(AlertDialog.Builder builder,
+    protected void onPrepareDialogBuilder(Builder builder,
             DialogInterface.OnClickListener listener) {
     }
 
@@ -72,15 +74,17 @@
     protected void onDialogStateRestored(Dialog dialog, Bundle savedInstanceState) {
     }
 
-    public static class CustomListPreferenceDialogFragment extends ListPreferenceDialogFragment {
+    public static class CustomListPreferenceDialogFragment extends
+            ListPreferenceDialogFragmentCompat {
 
         private static final java.lang.String KEY_CLICKED_ENTRY_INDEX
                 = "settings.CustomListPrefDialog.KEY_CLICKED_ENTRY_INDEX";
 
         private int mClickedDialogEntryIndex;
 
-        public static ListPreferenceDialogFragment newInstance(String key) {
-            final ListPreferenceDialogFragment fragment = new CustomListPreferenceDialogFragment();
+        public static ListPreferenceDialogFragmentCompat newInstance(String key) {
+            final ListPreferenceDialogFragmentCompat fragment =
+                    new CustomListPreferenceDialogFragment();
             final Bundle b = new Bundle(1);
             b.putString(ARG_KEY, key);
             fragment.setArguments(b);
@@ -92,7 +96,7 @@
         }
 
         @Override
-        protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
+        protected void onPrepareDialogBuilder(Builder builder) {
             super.onPrepareDialogBuilder(builder);
             mClickedDialogEntryIndex = getCustomizablePreference()
                     .findIndexOfValue(getCustomizablePreference().getValue());
diff --git a/src/com/android/settings/DateTimeSettings.java b/src/com/android/settings/DateTimeSettings.java
index 16c6ff5..bf4299b 100644
--- a/src/com/android/settings/DateTimeSettings.java
+++ b/src/com/android/settings/DateTimeSettings.java
@@ -71,7 +71,7 @@
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
-        getLifecycle().addObserver(new TimeChangeListenerMixin(context, this));
+        getSettingsLifecycle().addObserver(new TimeChangeListenerMixin(context, this));
     }
 
     @Override
diff --git a/src/com/android/settings/DisplaySettings.java b/src/com/android/settings/DisplaySettings.java
index ea9267a..236c7db 100644
--- a/src/com/android/settings/DisplaySettings.java
+++ b/src/com/android/settings/DisplaySettings.java
@@ -69,7 +69,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle());
+        return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
     @Override
diff --git a/src/com/android/settings/EditPinPreference.java b/src/com/android/settings/EditPinPreference.java
index 4efed4a..611f520 100644
--- a/src/com/android/settings/EditPinPreference.java
+++ b/src/com/android/settings/EditPinPreference.java
@@ -23,19 +23,19 @@
 import android.view.View;
 import android.widget.EditText;
 
-import com.android.settingslib.CustomEditTextPreference;
+import com.android.settingslib.CustomEditTextPreferenceCompat;
 
 /**
  * TODO: Add a soft dialpad for PIN entry.
  */
-class EditPinPreference extends CustomEditTextPreference {
+class EditPinPreference extends CustomEditTextPreferenceCompat {
 
     interface OnPinEnteredListener {
         void onPinEntered(EditPinPreference preference, boolean positiveResult);
     }
-    
+
     private OnPinEnteredListener mPinListener;
-    
+
     public EditPinPreference(Context context, AttributeSet attrs) {
         super(context, attrs);
     }
@@ -43,7 +43,7 @@
     public EditPinPreference(Context context, AttributeSet attrs, int defStyle) {
         super(context, attrs, defStyle);
     }
-    
+
     public void setOnPinEnteredListener(OnPinEnteredListener listener) {
         mPinListener = listener;
     }
diff --git a/src/com/android/settings/ProxySelector.java b/src/com/android/settings/ProxySelector.java
index 79767fb..1c51a98 100644
--- a/src/com/android/settings/ProxySelector.java
+++ b/src/com/android/settings/ProxySelector.java
@@ -113,7 +113,7 @@
             Log.e(TAG, "Old dialog fragment not null!");
         }
         mDialogFragment = new SettingsDialogFragment(this, dialogId);
-        mDialogFragment.show(getActivity().getFragmentManager(), Integer.toString(dialogId));
+        mDialogFragment.show(getActivity().getSupportFragmentManager(), Integer.toString(dialogId));
     }
 
     private void initView(View view) {
diff --git a/src/com/android/settings/RestrictedListPreference.java b/src/com/android/settings/RestrictedListPreference.java
index 7e4c456..a5d241c 100644
--- a/src/com/android/settings/RestrictedListPreference.java
+++ b/src/com/android/settings/RestrictedListPreference.java
@@ -41,6 +41,8 @@
 import java.util.ArrayList;
 import java.util.List;
 
+import androidx.appcompat.app.AlertDialog.Builder;
+import androidx.preference.ListPreferenceDialogFragmentCompat;
 import androidx.preference.PreferenceViewHolder;
 
 public class RestrictedListPreference extends CustomListPreference {
@@ -168,7 +170,7 @@
     }
 
     @Override
-    protected void onPrepareDialogBuilder(AlertDialog.Builder builder,
+    protected void onPrepareDialogBuilder(Builder builder,
             DialogInterface.OnClickListener listener) {
         builder.setAdapter(createListAdapter(), listener);
     }
@@ -218,8 +220,8 @@
             CustomListPreference.CustomListPreferenceDialogFragment {
         private int mLastCheckedPosition = AdapterView.INVALID_POSITION;
 
-        public static ListPreferenceDialogFragment newInstance(String key) {
-            final ListPreferenceDialogFragment fragment
+        public static ListPreferenceDialogFragmentCompat newInstance(String key) {
+            final ListPreferenceDialogFragmentCompat fragment
                     = new RestrictedListPreferenceDialogFragment();
             final Bundle b = new Bundle(1);
             b.putString(ARG_KEY, key);
diff --git a/src/com/android/settings/SeekBarDialogPreference.java b/src/com/android/settings/SeekBarDialogPreference.java
index 507c551..d0c8134 100644
--- a/src/com/android/settings/SeekBarDialogPreference.java
+++ b/src/com/android/settings/SeekBarDialogPreference.java
@@ -23,13 +23,13 @@
 import android.widget.ImageView;
 import android.widget.SeekBar;
 
-import com.android.settingslib.CustomDialogPreference;
+import com.android.settingslib.CustomDialogPreferenceCompat;
 
 /**
  * Based on frameworks/base/core/java/android/preference/SeekBarDialogPreference.java
  * except uses support lib preferences.
  */
-public class SeekBarDialogPreference extends CustomDialogPreference {
+public class SeekBarDialogPreference extends CustomDialogPreferenceCompat {
     private final Drawable mMyIcon;
 
     public SeekBarDialogPreference(Context context, AttributeSet attrs) {
diff --git a/src/com/android/settings/SettingsActivity.java b/src/com/android/settings/SettingsActivity.java
index 7513e43..cafe5cf 100644
--- a/src/com/android/settings/SettingsActivity.java
+++ b/src/com/android/settings/SettingsActivity.java
@@ -70,13 +70,13 @@
 import androidx.fragment.app.FragmentTransaction;
 import androidx.localbroadcastmanager.content.LocalBroadcastManager;
 import androidx.preference.Preference;
-import androidx.preference.PreferenceFragment;
+import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceManager;
 
 
 public class SettingsActivity extends SettingsBaseActivity
         implements PreferenceManager.OnPreferenceTreeClickListener,
-        PreferenceFragment.OnPreferenceStartFragmentCallback,
+        PreferenceFragmentCompat.OnPreferenceStartFragmentCallback,
         ButtonBarHandler, FragmentManager.OnBackStackChangedListener {
 
     private static final String LOG_TAG = "SettingsActivity";
@@ -190,7 +190,7 @@
     }
 
     @Override
-    public boolean onPreferenceStartFragment(PreferenceFragment caller, Preference pref) {
+    public boolean onPreferenceStartFragment(PreferenceFragmentCompat caller, Preference pref) {
         new SubSettingLauncher(this)
                 .setDestination(pref.getFragment())
                 .setArguments(pref.getExtras())
@@ -270,7 +270,7 @@
 
         mContent = findViewById(R.id.main_content);
 
-        getFragmentManager().addOnBackStackChangedListener(this);
+        getSupportFragmentManager().addOnBackStackChangedListener(this);
 
         if (savedState != null) {
             // We are restarting from a previous saved state; used that to initialize, instead
@@ -430,7 +430,7 @@
     }
 
     private void setTitleFromBackStack() {
-        final int count = getFragmentManager().getBackStackEntryCount();
+        final int count = getSupportFragmentManager().getBackStackEntryCount();
 
         if (count == 0) {
             if (mInitialTitleResId > 0) {
@@ -441,7 +441,8 @@
             return;
         }
 
-        FragmentManager.BackStackEntry bse = getFragmentManager().getBackStackEntryAt(count - 1);
+        FragmentManager.BackStackEntry bse = getSupportFragmentManager().
+                getBackStackEntryAt(count - 1);
         setTitleFromBackStackEntry(bse);
     }
 
@@ -581,7 +582,7 @@
                     + fragmentName);
         }
         Fragment f = Fragment.instantiate(this, fragmentName, args);
-        FragmentTransaction transaction = getFragmentManager().beginTransaction();
+        FragmentTransaction transaction = getSupportFragmentManager().beginTransaction();
         transaction.replace(R.id.main_content, f);
         if (withTransition) {
             TransitionManager.beginDelayedTransition(mContent);
@@ -595,7 +596,7 @@
             transaction.setBreadCrumbTitle(title);
         }
         transaction.commitAllowingStateLoss();
-        getFragmentManager().executePendingTransactions();
+        getSupportFragmentManager().executePendingTransactions();
         Log.d(LOG_TAG, "Executed frag manager pendingTransactions");
         return f;
     }
diff --git a/src/com/android/settings/SettingsHomepageActivity.java b/src/com/android/settings/SettingsHomepageActivity.java
index eed3a7f..6eef99c 100644
--- a/src/com/android/settings/SettingsHomepageActivity.java
+++ b/src/com/android/settings/SettingsHomepageActivity.java
@@ -16,9 +16,6 @@
 
 package com.android.settings;
 
-import android.app.Activity;
-import android.app.Fragment;
-import android.app.FragmentManager;
 import android.content.Context;
 import android.content.Intent;
 import android.os.Bundle;
@@ -28,6 +25,10 @@
 import com.android.settings.core.SettingsBaseActivity;
 import com.android.settings.homepage.HomepageFragment;
 
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
+import androidx.fragment.app.FragmentManager;
+
 public class SettingsHomepageActivity extends SettingsBaseActivity {
 
     @Override
@@ -51,10 +52,10 @@
     /**
      * Switch to a specific Fragment
      */
-    public static void switchToFragment(Activity activity, int id, String fragmentName) {
+    public static void switchToFragment(FragmentActivity activity, int id, String fragmentName) {
         final Fragment f = Fragment.instantiate(activity, fragmentName, null /* args */);
 
-        FragmentManager manager = activity.getFragmentManager();
+        FragmentManager manager = activity.getSupportFragmentManager();
         manager.beginTransaction().replace(id, f).commitAllowingStateLoss();
         manager.executePendingTransactions();
     }
diff --git a/src/com/android/settings/SettingsLicenseActivity.java b/src/com/android/settings/SettingsLicenseActivity.java
index d3c3b48..c1bf9e5 100644
--- a/src/com/android/settings/SettingsLicenseActivity.java
+++ b/src/com/android/settings/SettingsLicenseActivity.java
@@ -16,7 +16,6 @@
 
 package com.android.settings;
 
-import android.app.Activity;
 import android.content.ActivityNotFoundException;
 import android.content.ContentResolver;
 import android.content.Intent;
@@ -28,19 +27,20 @@
 import android.widget.Toast;
 
 import com.android.settings.users.RestrictedProfileSettings;
-import com.android.settingslib.license.LicenseHtmlLoader;
+import com.android.settingslib.license.LicenseHtmlLoaderCompat;
 
 import java.io.File;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.core.content.FileProvider;
+import androidx.fragment.app.FragmentActivity;
 import androidx.loader.app.LoaderManager;
 import androidx.loader.content.Loader;
 
 /**
  * The "dialog" that shows from "License" in the Settings app.
  */
-public class SettingsLicenseActivity extends Activity implements
+public class SettingsLicenseActivity extends FragmentActivity implements
             LoaderManager.LoaderCallbacks<File> {
     private static final String TAG = "SettingsLicenseActivity";
 
@@ -64,7 +64,7 @@
 
     @Override
     public Loader<File> onCreateLoader(int id, Bundle args) {
-        return new LicenseHtmlLoader(this);
+        return new LicenseHtmlLoaderCompat(this);
     }
 
     @Override
@@ -77,7 +77,7 @@
     }
 
     private void showHtmlFromDefaultXmlFiles() {
-        getLoaderManager().initLoader(LOADER_ID_LICENSE_HTML_LOADER, Bundle.EMPTY, this);
+        getSupportLoaderManager().initLoader(LOADER_ID_LICENSE_HTML_LOADER, Bundle.EMPTY, this);
     }
 
     @VisibleForTesting
diff --git a/src/com/android/settings/SettingsPreferenceFragment.java b/src/com/android/settings/SettingsPreferenceFragment.java
index 74b1405..7ad18fe 100644
--- a/src/com/android/settings/SettingsPreferenceFragment.java
+++ b/src/com/android/settings/SettingsPreferenceFragment.java
@@ -41,10 +41,10 @@
 import com.android.settings.support.actionbar.HelpResourceProvider;
 import com.android.settings.widget.HighlightablePreferenceGroupAdapter;
 import com.android.settings.widget.LoadingViewController;
-import com.android.settingslib.CustomDialogPreference;
-import com.android.settingslib.CustomEditTextPreference;
+import com.android.settingslib.CustomDialogPreferenceCompat;
+import com.android.settingslib.CustomEditTextPreferenceCompat;
 import com.android.settingslib.core.instrumentation.Instrumentable;
-import com.android.settingslib.widget.FooterPreferenceMixin;
+import com.android.settingslib.widget.FooterPreferenceMixinCompat;
 
 import java.util.UUID;
 
@@ -68,8 +68,8 @@
 
     private static final String SAVE_HIGHLIGHTED_KEY = "android:preference_highlighted";
 
-    protected final FooterPreferenceMixin mFooterPreferenceMixin =
-            new FooterPreferenceMixin(this, getLifecycle());
+    protected final FooterPreferenceMixinCompat mFooterPreferenceMixin =
+            new FooterPreferenceMixinCompat(this, getSettingsLifecycle());
 
 
     private static final int ORDER_FIRST = -1;
@@ -517,11 +517,11 @@
         } else if (preference instanceof CustomListPreference) {
             f = CustomListPreference.CustomListPreferenceDialogFragment
                     .newInstance(preference.getKey());
-        } else if (preference instanceof CustomDialogPreference) {
-            f = CustomDialogPreference.CustomPreferenceDialogFragment
+        } else if (preference instanceof CustomDialogPreferenceCompat) {
+            f = CustomDialogPreferenceCompat.CustomPreferenceDialogFragment
                     .newInstance(preference.getKey());
-        } else if (preference instanceof CustomEditTextPreference) {
-            f = CustomEditTextPreference.CustomPreferenceDialogFragment
+        } else if (preference instanceof CustomEditTextPreferenceCompat) {
+            f = CustomEditTextPreferenceCompat.CustomPreferenceDialogFragment
                     .newInstance(preference.getKey());
         } else {
             super.onDisplayPreferenceDialog(preference);
diff --git a/src/com/android/settings/TetherSettings.java b/src/com/android/settings/TetherSettings.java
index b703e4d..9515a13 100644
--- a/src/com/android/settings/TetherSettings.java
+++ b/src/com/android/settings/TetherSettings.java
@@ -112,7 +112,7 @@
     public void onAttach(Context context) {
         super.onAttach(context);
         mWifiTetherPreferenceController =
-                new WifiTetherPreferenceController(context, getLifecycle());
+                new WifiTetherPreferenceController(context, getSettingsLifecycle());
     }
 
     @Override
diff --git a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
index 1d5f8f4..1b8e554 100644
--- a/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
+++ b/src/com/android/settings/accessibility/AccessibilitySettingsForSetupWizardActivity.java
@@ -27,6 +27,7 @@
 import com.android.settingslib.core.instrumentation.Instrumentable;
 
 import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
 
 public class AccessibilitySettingsForSetupWizardActivity extends SettingsActivity {
 
@@ -70,7 +71,7 @@
     }
 
     @Override
-    public boolean onPreferenceStartFragment(PreferenceFragment caller, Preference pref) {
+    public boolean onPreferenceStartFragment(PreferenceFragmentCompat caller, Preference pref) {
         Bundle args = pref.getExtras();
         if (args == null) {
             args = new Bundle();
diff --git a/src/com/android/settings/accessibility/ListDialogPreference.java b/src/com/android/settings/accessibility/ListDialogPreference.java
index cfb77bb..8a09512 100644
--- a/src/com/android/settings/accessibility/ListDialogPreference.java
+++ b/src/com/android/settings/accessibility/ListDialogPreference.java
@@ -16,7 +16,6 @@
 
 package com.android.settings.accessibility;
 
-import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -31,12 +30,14 @@
 import android.widget.AdapterView;
 import android.widget.BaseAdapter;
 
-import com.android.settingslib.CustomDialogPreference;
+import com.android.settingslib.CustomDialogPreferenceCompat;
+
+import androidx.appcompat.app.AlertDialog.Builder;
 
 /**
  * Abstract dialog preference that displays a set of values and optional titles.
  */
-public abstract class ListDialogPreference extends CustomDialogPreference {
+public abstract class ListDialogPreference extends CustomDialogPreferenceCompat {
     private CharSequence[] mEntryTitles;
     private int[] mEntryValues;
 
@@ -138,7 +139,7 @@
     }
 
     @Override
-    protected void onPrepareDialogBuilder(AlertDialog.Builder builder,
+    protected void onPrepareDialogBuilder(Builder builder,
             DialogInterface.OnClickListener listener) {
         super.onPrepareDialogBuilder(builder, listener);
 
diff --git a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
index bca6195..08a6269 100644
--- a/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
+++ b/src/com/android/settings/accessibility/ShortcutServicePickerFragment.java
@@ -22,7 +22,6 @@
         .DALTONIZER_COMPONENT_NAME;
 
 import android.accessibilityservice.AccessibilityServiceInfo;
-import android.app.Activity;
 import android.app.Dialog;
 import android.content.ComponentName;
 import android.content.Context;
@@ -55,6 +54,7 @@
 import java.util.Map;
 
 import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
 
 /**
  * Fragment for picking accessibility shortcut service
@@ -135,10 +135,11 @@
                 // This is a framework feature. It doesn't need to be confirmed.
                 onRadioButtonConfirmed(selectedKey);
             } else {
-                final Activity activity = getActivity();
+                final FragmentActivity activity = getActivity();
                 if (activity != null) {
                     ConfirmationDialogFragment.newInstance(this, selectedKey)
-                            .show(activity.getFragmentManager(), ConfirmationDialogFragment.TAG);
+                            .show(activity.getSupportFragmentManager(),
+                                    ConfirmationDialogFragment.TAG);
                 }
             }
         }
diff --git a/src/com/android/settings/accounts/AccountDashboardFragment.java b/src/com/android/settings/accounts/AccountDashboardFragment.java
index fd15f4e..d8b1008 100644
--- a/src/com/android/settings/accounts/AccountDashboardFragment.java
+++ b/src/com/android/settings/accounts/AccountDashboardFragment.java
@@ -80,7 +80,7 @@
         final AccountPreferenceController accountPrefController =
                 new AccountPreferenceController(context, parent, authorities);
         if (parent != null) {
-            parent.getLifecycle().addObserver(accountPrefController);
+            parent.getSettingsLifecycle().addObserver(accountPrefController);
         }
         controllers.add(accountPrefController);
         controllers.add(new AutoSyncDataPreferenceController(context, parent));
diff --git a/src/com/android/settings/accounts/AccountDetailDashboardFragment.java b/src/com/android/settings/accounts/AccountDetailDashboardFragment.java
index 56d8763..709066a 100644
--- a/src/com/android/settings/accounts/AccountDetailDashboardFragment.java
+++ b/src/com/android/settings/accounts/AccountDetailDashboardFragment.java
@@ -117,7 +117,7 @@
         mRemoveAccountController = new RemoveAccountPreferenceController(context, this);
         controllers.add(mRemoveAccountController);
         controllers.add(new AccountHeaderPreferenceController(
-                context, getLifecycle(), getActivity(), this /* host */, getArguments()));
+                context, getSettingsLifecycle(), getActivity(), this /* host */, getArguments()));
         return controllers;
     }
 
diff --git a/src/com/android/settings/accounts/AccountHeaderPreferenceController.java b/src/com/android/settings/accounts/AccountHeaderPreferenceController.java
index 54b042c..25a902e 100644
--- a/src/com/android/settings/accounts/AccountHeaderPreferenceController.java
+++ b/src/com/android/settings/accounts/AccountHeaderPreferenceController.java
@@ -35,6 +35,7 @@
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnResume;
 
+import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceScreen;
 
 public class AccountHeaderPreferenceController extends AbstractPreferenceController
@@ -43,14 +44,14 @@
     private static final String KEY_ACCOUNT_HEADER = "account_header";
 
     private final Activity mActivity;
-    private final PreferenceFragment mHost;
+    private final PreferenceFragmentCompat mHost;
     private final Account mAccount;
     private final UserHandle mUserHandle;
 
     private LayoutPreference mHeaderPreference;
 
     public AccountHeaderPreferenceController(Context context, Lifecycle lifecycle,
-            Activity activity, PreferenceFragment host, Bundle args) {
+            Activity activity, PreferenceFragmentCompat host, Bundle args) {
         super(context);
         mActivity = activity;
         mHost = host;
diff --git a/src/com/android/settings/accounts/AccountSyncSettings.java b/src/com/android/settings/accounts/AccountSyncSettings.java
index 66e8d22..f90c3c6 100644
--- a/src/com/android/settings/accounts/AccountSyncSettings.java
+++ b/src/com/android/settings/accounts/AccountSyncSettings.java
@@ -122,7 +122,7 @@
         final Activity activity = getActivity();
         final Preference pref = EntityHeaderController
                 .newInstance(activity, this, null /* header */)
-                .setRecyclerView(getListView(), getLifecycle())
+                .setRecyclerView(getListView(), getSettingsLifecycle())
                 .setIcon(getDrawableForType(mAccount.type))
                 .setLabel(mAccount.name)
                 .setSummary(getLabelForType(mAccount.type))
diff --git a/src/com/android/settings/accounts/AccountTypePreferenceLoader.java b/src/com/android/settings/accounts/AccountTypePreferenceLoader.java
index 4598f76..90bcb5e 100644
--- a/src/com/android/settings/accounts/AccountTypePreferenceLoader.java
+++ b/src/com/android/settings/accounts/AccountTypePreferenceLoader.java
@@ -41,6 +41,7 @@
 
 import androidx.preference.Preference;
 import androidx.preference.Preference.OnPreferenceClickListener;
+import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceGroup;
 import androidx.preference.PreferenceScreen;
 
@@ -60,9 +61,9 @@
 
     private AuthenticatorHelper mAuthenticatorHelper;
     private UserHandle mUserHandle;
-    private PreferenceFragment mFragment;
+    private PreferenceFragmentCompat mFragment;
 
-    public AccountTypePreferenceLoader(PreferenceFragment fragment,
+    public AccountTypePreferenceLoader(PreferenceFragmentCompat fragment,
             AuthenticatorHelper authenticatorHelper, UserHandle userHandle) {
         mFragment = fragment;
         mAuthenticatorHelper = authenticatorHelper;
diff --git a/src/com/android/settings/accounts/EnterpriseDisclosurePreferenceController.java b/src/com/android/settings/accounts/EnterpriseDisclosurePreferenceController.java
index 4fb8cf8..aad1172 100644
--- a/src/com/android/settings/accounts/EnterpriseDisclosurePreferenceController.java
+++ b/src/com/android/settings/accounts/EnterpriseDisclosurePreferenceController.java
@@ -22,7 +22,7 @@
 import com.android.settings.enterprise.EnterprisePrivacyFeatureProvider;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settingslib.widget.FooterPreference;
-import com.android.settingslib.widget.FooterPreferenceMixin;
+import com.android.settingslib.widget.FooterPreferenceMixinCompat;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.PreferenceScreen;
@@ -30,7 +30,7 @@
 public class EnterpriseDisclosurePreferenceController extends BasePreferenceController {
 
     private final EnterprisePrivacyFeatureProvider mFeatureProvider;
-    private FooterPreferenceMixin mFooterPreferenceMixin;
+    private FooterPreferenceMixinCompat mFooterPreferenceMixin;
     private PreferenceScreen mScreen;
 
     public EnterpriseDisclosurePreferenceController(Context context) {
@@ -41,7 +41,7 @@
                 .getEnterprisePrivacyFeatureProvider(mContext);
     }
 
-    public void setFooterPreferenceMixin(FooterPreferenceMixin footerPreferenceMixin) {
+    public void setFooterPreferenceMixin(FooterPreferenceMixinCompat footerPreferenceMixin) {
         mFooterPreferenceMixin = footerPreferenceMixin;
     }
 
diff --git a/src/com/android/settings/applications/AppInfoBase.java b/src/com/android/settings/applications/AppInfoBase.java
index f5a34b1..4ee2fd8 100644
--- a/src/com/android/settings/applications/AppInfoBase.java
+++ b/src/com/android/settings/applications/AppInfoBase.java
@@ -93,7 +93,7 @@
         mApplicationFeatureProvider = FeatureFactory.getFactory(activity)
                 .getApplicationFeatureProvider(activity);
         mState = ApplicationsState.getInstance(activity.getApplication());
-        mSession = mState.newSession(this, getLifecycle());
+        mSession = mState.newSession(this, getSettingsLifecycle());
         mDpm = (DevicePolicyManager) activity.getSystemService(Context.DEVICE_POLICY_SERVICE);
         mUserManager = (UserManager) activity.getSystemService(Context.USER_SERVICE);
         mPm = activity.getPackageManager();
diff --git a/src/com/android/settings/applications/AppInfoWithHeader.java b/src/com/android/settings/applications/AppInfoWithHeader.java
index 9b6b708..2a4aeb8 100644
--- a/src/com/android/settings/applications/AppInfoWithHeader.java
+++ b/src/com/android/settings/applications/AppInfoWithHeader.java
@@ -44,7 +44,7 @@
         final Activity activity = getActivity();
         final Preference pref = EntityHeaderController
                 .newInstance(activity, this, null /* header */)
-                .setRecyclerView(getListView(), getLifecycle())
+                .setRecyclerView(getListView(), getSettingsLifecycle())
                 .setIcon(IconDrawableFactory.newInstance(getContext())
                         .getBadgedIcon(mPackageInfo.applicationInfo))
                 .setLabel(mPackageInfo.applicationInfo.loadLabel(mPm))
diff --git a/src/com/android/settings/applications/DirectoryAccessDetails.java b/src/com/android/settings/applications/DirectoryAccessDetails.java
index 970a06d..02c33c0 100644
--- a/src/com/android/settings/applications/DirectoryAccessDetails.java
+++ b/src/com/android/settings/applications/DirectoryAccessDetails.java
@@ -99,7 +99,7 @@
         final Activity activity = getActivity();
         final Preference pref = EntityHeaderController
                 .newInstance(activity, this, /* header= */ null )
-                .setRecyclerView(getListView(), getLifecycle())
+                .setRecyclerView(getListView(), getSettingsLifecycle())
                 .setIcon(IconDrawableFactory.newInstance(getPrefContext())
                         .getBadgedIcon(mPackageInfo.applicationInfo))
                 .setLabel(mPackageInfo.applicationInfo.loadLabel(mPm))
diff --git a/src/com/android/settings/applications/FetchPackageStorageAsyncLoader.java b/src/com/android/settings/applications/FetchPackageStorageAsyncLoader.java
index 9ff96c1..f3ad326 100644
--- a/src/com/android/settings/applications/FetchPackageStorageAsyncLoader.java
+++ b/src/com/android/settings/applications/FetchPackageStorageAsyncLoader.java
@@ -26,14 +26,14 @@
 import com.android.internal.util.Preconditions;
 import com.android.settingslib.applications.StorageStatsSource;
 import com.android.settingslib.applications.StorageStatsSource.AppStorageStats;
-import com.android.settingslib.utils.AsyncLoader;
+import com.android.settingslib.utils.AsyncLoaderCompat;
 
 import java.io.IOException;
 
 /**
  * Fetches the storage stats using the StorageStatsManager for a given package and user tuple.
  */
-public class FetchPackageStorageAsyncLoader extends AsyncLoader<AppStorageStats> {
+public class FetchPackageStorageAsyncLoader extends AsyncLoaderCompat<AppStorageStats> {
     private static final String TAG = "FetchPackageStorage";
     private final StorageStatsSource mSource;
     private final ApplicationInfo mInfo;
diff --git a/src/com/android/settings/applications/ProcessStatsDetail.java b/src/com/android/settings/applications/ProcessStatsDetail.java
index 1d5fcd9..3331b1c 100644
--- a/src/com/android/settings/applications/ProcessStatsDetail.java
+++ b/src/com/android/settings/applications/ProcessStatsDetail.java
@@ -129,7 +129,7 @@
         final Activity activity = getActivity();
         final Preference pref = EntityHeaderController
                 .newInstance(activity, this, null /* appHeader */)
-                .setRecyclerView(getListView(), getLifecycle())
+                .setRecyclerView(getListView(), getSettingsLifecycle())
                 .setIcon(mApp.mUiTargetApp != null
                         ? IconDrawableFactory.newInstance(activity).getBadgedIcon(mApp.mUiTargetApp)
                         : new ColorDrawable(0))
diff --git a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
index a1aafed..69fa71d 100644
--- a/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppButtonsPreferenceController.java
@@ -568,7 +568,7 @@
     private void showDialogInner(@ButtonActionDialogFragment.DialogType int id) {
         ButtonActionDialogFragment newFragment = ButtonActionDialogFragment.newInstance(id);
         newFragment.setTargetFragment(mFragment, 0);
-        newFragment.show(mActivity.getFragmentManager(), "dialog " + id);
+        newFragment.show(mActivity.getSupportFragmentManager(), "dialog " + id);
     }
 
     /** Returns whether there is only one user on this device, not including the system-only user */
diff --git a/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceController.java b/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceController.java
index 925d982..61502d0 100644
--- a/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceController.java
+++ b/src/com/android/settings/applications/appinfo/AppDataUsagePreferenceController.java
@@ -37,7 +37,7 @@
 import com.android.settingslib.core.lifecycle.events.OnPause;
 import com.android.settingslib.core.lifecycle.events.OnResume;
 import com.android.settingslib.net.ChartData;
-import com.android.settingslib.net.ChartDataLoader;
+import com.android.settingslib.net.ChartDataLoaderCompat;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.loader.app.LoaderManager;
@@ -86,7 +86,7 @@
             final AppItem app = new AppItem(uid);
             app.addUid(uid);
             mParent.getLoaderManager().restartLoader(mParent.LOADER_CHART_DATA,
-                    ChartDataLoader.buildArgs(getTemplate(mContext), app),
+                    ChartDataLoaderCompat.buildArgs(getTemplate(mContext), app),
                     this);
         }
     }
@@ -98,7 +98,7 @@
 
     @Override
     public Loader<ChartData> onCreateLoader(int id, Bundle args) {
-        return new ChartDataLoader(mContext, mStatsSession, args);
+        return new ChartDataLoaderCompat(mContext, mStatsSession, args);
     }
 
     @Override
diff --git a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
index 80f01fc..4ef5b03 100755
--- a/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
+++ b/src/com/android/settings/applications/appinfo/AppInfoDashboardFragment.java
@@ -238,7 +238,7 @@
         }
         final String packageName = getPackageName();
         final List<AbstractPreferenceController> controllers = new ArrayList<>();
-        final Lifecycle lifecycle = getLifecycle();
+        final Lifecycle lifecycle = getSettingsLifecycle();
 
         // The following are controllers for preferences that needs to refresh the preference state
         // when app state changes.
@@ -524,7 +524,7 @@
         }
         if (mState == null) {
             mState = ApplicationsState.getInstance(activity.getApplication());
-            mSession = mState.newSession(this, getLifecycle());
+            mSession = mState.newSession(this, getSettingsLifecycle());
         }
         mUserId = UserHandle.myUserId();
         mAppEntry = mState.getEntry(getPackageName(), UserHandle.myUserId());
diff --git a/src/com/android/settings/applications/assist/ManageAssist.java b/src/com/android/settings/applications/assist/ManageAssist.java
index cd85aca..8eb6a7f 100644
--- a/src/com/android/settings/applications/assist/ManageAssist.java
+++ b/src/com/android/settings/applications/assist/ManageAssist.java
@@ -54,7 +54,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle());
+        return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
     @Override
diff --git a/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java b/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
index 81606b8..d0493e9 100644
--- a/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
+++ b/src/com/android/settings/applications/defaultapps/DefaultAppPickerFragment.java
@@ -16,7 +16,6 @@
 
 package com.android.settings.applications.defaultapps;
 
-import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
@@ -36,6 +35,7 @@
 
 import androidx.fragment.app.DialogFragment;
 import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentActivity;
 
 /**
  * A generic app picker fragment that shows a list of app as radio button group.
@@ -54,13 +54,13 @@
     public void onRadioButtonClicked(RadioButtonPreference selected) {
         final String selectedKey = selected.getKey();
         final CharSequence confirmationMessage = getConfirmationMessage(getCandidate(selectedKey));
-        final Activity activity = getActivity();
+        final FragmentActivity activity = getActivity();
         if (TextUtils.isEmpty(confirmationMessage)) {
             super.onRadioButtonClicked(selected);
         } else if (activity != null) {
             final DialogFragment fragment =
                     newConfirmationDialogFragment(selectedKey, confirmationMessage);
-            fragment.show(activity.getFragmentManager(), ConfirmationDialogFragment.TAG);
+            fragment.show(activity.getSupportFragmentManager(), ConfirmationDialogFragment.TAG);
         }
     }
 
diff --git a/src/com/android/settings/applications/managedomainurls/DomainAppPreferenceController.java b/src/com/android/settings/applications/managedomainurls/DomainAppPreferenceController.java
index a1b9ab5..cb89c9a 100644
--- a/src/com/android/settings/applications/managedomainurls/DomainAppPreferenceController.java
+++ b/src/com/android/settings/applications/managedomainurls/DomainAppPreferenceController.java
@@ -81,7 +81,7 @@
     public void setFragment(ManageDomainUrls fragment) {
         mFragment = fragment;
         mMetricsCategory = fragment.getMetricsCategory();
-        mSession = mApplicationsState.newSession(this, mFragment.getLifecycle());
+        mSession = mApplicationsState.newSession(this, mFragment.getSettingsLifecycle());
     }
 
     @Override
diff --git a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java
index 2c94acc..fe4ae1d 100644
--- a/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java
+++ b/src/com/android/settings/applications/specialaccess/deviceadmin/DeviceAdminListPreferenceController.java
@@ -45,7 +45,7 @@
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
 import com.android.settingslib.widget.FooterPreference;
-import com.android.settingslib.widget.FooterPreferenceMixin;
+import com.android.settingslib.widget.FooterPreferenceMixinCompat;
 
 import java.util.ArrayList;
 import java.util.Collection;
@@ -88,7 +88,7 @@
     };
 
     private PreferenceGroup mPreferenceGroup;
-    private FooterPreferenceMixin mFooterPreferenceMixin;
+    private FooterPreferenceMixinCompat mFooterPreferenceMixin;
 
     static {
         FILTER.addAction(ACTION_DEVICE_POLICY_MANAGER_STATE_CHANGED);
@@ -103,7 +103,7 @@
     }
 
     public DeviceAdminListPreferenceController setFooterPreferenceMixin(
-            FooterPreferenceMixin mixin) {
+            FooterPreferenceMixinCompat mixin) {
         mFooterPreferenceMixin = mixin;
         return this;
     }
diff --git a/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java b/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java
index dd940db..b768063 100644
--- a/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java
+++ b/src/com/android/settings/applications/specialaccess/premiumsms/PremiumSmsAccess.java
@@ -63,7 +63,7 @@
         super.onCreate(icicle);
         mApplicationsState = ApplicationsState.getInstance((Application)
                 getContext().getApplicationContext());
-        mSession = mApplicationsState.newSession(this, getLifecycle());
+        mSession = mApplicationsState.newSession(this, getSettingsLifecycle());
         mSmsBackend = new AppStateSmsPremBridge(getContext(), mApplicationsState, this);
     }
 
diff --git a/src/com/android/settings/backup/BackupSettingsActivity.java b/src/com/android/settings/backup/BackupSettingsActivity.java
index 3d48cdd..c17d1e7 100644
--- a/src/com/android/settings/backup/BackupSettingsActivity.java
+++ b/src/com/android/settings/backup/BackupSettingsActivity.java
@@ -16,7 +16,6 @@
 
 package com.android.settings.backup;
 
-import android.app.Activity;
 import android.content.Context;
 import android.content.Intent;
 import android.content.pm.PackageManager;
@@ -34,6 +33,7 @@
 import java.util.List;
 
 import androidx.annotation.VisibleForTesting;
+import androidx.fragment.app.FragmentActivity;
 import androidx.fragment.app.FragmentManager;
 
 
@@ -42,7 +42,7 @@
  * if the manufacturer provided their backup settings.
  */
 @SearchIndexable
-public class BackupSettingsActivity extends Activity implements Indexable {
+public class BackupSettingsActivity extends FragmentActivity implements Indexable {
     private static final String TAG = "BackupSettingsActivity";
     private FragmentManager mFragmentManager;
 
@@ -81,7 +81,7 @@
             }
             // mFragmentManager can be set by {@link #setFragmentManager()} for testing
             if (mFragmentManager == null) {
-                mFragmentManager = getFragmentManager();
+                mFragmentManager = getSupportFragmentManager();
             }
             mFragmentManager.beginTransaction()
                     .replace(android.R.id.content, new BackupSettingsFragment())
diff --git a/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java b/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java
index ab3cd84..ec7d120 100644
--- a/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/BiometricsEnrollEnrolling.java
@@ -73,7 +73,8 @@
         if (shouldFinishOnStop() && !isChangingConfigurations()) {
             if (mSidecar != null) {
                 mSidecar.cancelEnrollment();
-                getFragmentManager().beginTransaction().remove(mSidecar).commitAllowingStateLoss();
+                getSupportFragmentManager()
+                        .beginTransaction().remove(mSidecar).commitAllowingStateLoss();
             }
             finish();
         }
@@ -84,7 +85,8 @@
         if (mSidecar != null) {
             mSidecar.setListener(null);
             mSidecar.cancelEnrollment();
-            getFragmentManager().beginTransaction().remove(mSidecar).commitAllowingStateLoss();
+            getSupportFragmentManager()
+                    .beginTransaction().remove(mSidecar).commitAllowingStateLoss();
             mSidecar = null;
         }
         super.onBackPressed();
@@ -103,10 +105,11 @@
     }
 
     public void startEnrollment() {
-        mSidecar = (BiometricEnrollSidecar) getFragmentManager().findFragmentByTag(TAG_SIDECAR);
+        mSidecar = (BiometricEnrollSidecar) getSupportFragmentManager()
+                .findFragmentByTag(TAG_SIDECAR);
         if (mSidecar == null) {
             mSidecar = getSidecar();
-            getFragmentManager().beginTransaction().add(mSidecar, TAG_SIDECAR).commit();
+            getSupportFragmentManager().beginTransaction().add(mSidecar, TAG_SIDECAR).commit();
         }
         mSidecar.setListener(this);
     }
diff --git a/src/com/android/settings/biometrics/face/FaceEnrollEnrolling.java b/src/com/android/settings/biometrics/face/FaceEnrollEnrolling.java
index ad92c8d..9786363 100644
--- a/src/com/android/settings/biometrics/face/FaceEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/face/FaceEnrollEnrolling.java
@@ -31,8 +31,8 @@
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.biometrics.BiometricEnrollSidecar;
-import com.android.settings.biometrics.BiometricsEnrollEnrolling;
 import com.android.settings.biometrics.BiometricErrorDialog;
+import com.android.settings.biometrics.BiometricsEnrollEnrolling;
 import com.android.settings.password.ChooseLockSettingsHelper;
 
 
@@ -166,7 +166,7 @@
 
     private void showErrorDialog(CharSequence msg, int msgId) {
         BiometricErrorDialog dialog = FaceErrorDialog.newInstance(msg, msgId);
-        dialog.show(getFragmentManager(), FaceErrorDialog.class.getName());
+        dialog.show(getSupportFragmentManager(), FaceErrorDialog.class.getName());
     }
 
     private void showError(CharSequence error) {
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
index 3d4c5d4..56d96ce 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollEnrolling.java
@@ -303,12 +303,12 @@
 
     private void showErrorDialog(CharSequence msg, int msgId) {
         BiometricErrorDialog dlg = FingerprintErrorDialog.newInstance(msg, msgId);
-        dlg.show(getFragmentManager(), FingerprintErrorDialog.class.getName());
+        dlg.show(getSupportFragmentManager(), FingerprintErrorDialog.class.getName());
     }
 
     private void showIconTouchDialog() {
         mIconTouchCount = 0;
-        new IconTouchDialog().show(getFragmentManager(), null /* tag */);
+        new IconTouchDialog().show(getSupportFragmentManager(), null /* tag */);
     }
 
     private void showError(CharSequence error) {
diff --git a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
index 93a8d6e..d2975ef 100644
--- a/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/biometrics/fingerprint/FingerprintEnrollFindSensor.java
@@ -78,11 +78,11 @@
     }
 
     private void startLookingForFingerprint() {
-        mSidecar = (FingerprintEnrollSidecar) getFragmentManager().findFragmentByTag(
+        mSidecar = (FingerprintEnrollSidecar) getSupportFragmentManager().findFragmentByTag(
                 FingerprintEnrollEnrolling.TAG_SIDECAR);
         if (mSidecar == null) {
             mSidecar = new FingerprintEnrollSidecar();
-            getFragmentManager().beginTransaction()
+            getSupportFragmentManager().beginTransaction()
                     .add(mSidecar, FingerprintEnrollEnrolling.TAG_SIDECAR).commit();
         }
         mSidecar.setListener(new Listener() {
@@ -148,7 +148,8 @@
                     return;
                 }
             }
-            getFragmentManager().beginTransaction().remove(mSidecar).commitAllowingStateLoss();
+            getSupportFragmentManager().beginTransaction().remove(mSidecar).
+                    commitAllowingStateLoss();
             mSidecar = null;
             startActivityForResult(getFingerprintEnrollingIntent(), ENROLLING);
         }
diff --git a/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java
index 93e3b0d2..4529277 100644
--- a/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java
+++ b/src/com/android/settings/biometrics/fingerprint/SetupFingerprintEnrollFindSensor.java
@@ -54,7 +54,7 @@
 
     @Override
     protected void onSkipButtonClick() {
-        new SkipFingerprintDialog().show(getFragmentManager());
+        new SkipFingerprintDialog().show(getSupportFragmentManager());
     }
 
     @Override
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsButtonsController.java b/src/com/android/settings/bluetooth/BluetoothDetailsButtonsController.java
index 4993151..d7249b3 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsButtonsController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsButtonsController.java
@@ -23,6 +23,7 @@
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
+import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceScreen;
 
 /**
@@ -36,7 +37,7 @@
     private boolean mConnectButtonInitialized;
     private ActionButtonPreference mActionButtons;
 
-    public BluetoothDetailsButtonsController(Context context, PreferenceFragment fragment,
+    public BluetoothDetailsButtonsController(Context context, PreferenceFragmentCompat fragment,
             CachedBluetoothDevice device, Lifecycle lifecycle) {
         super(context, fragment, device, lifecycle);
         mIsConnected = device.isConnected();
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsController.java b/src/com/android/settings/bluetooth/BluetoothDetailsController.java
index 623c433..deb38fd 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsController.java
@@ -26,6 +26,7 @@
 import com.android.settingslib.core.lifecycle.events.OnPause;
 import com.android.settingslib.core.lifecycle.events.OnResume;
 
+import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceScreen;
 
 /**
@@ -37,10 +38,10 @@
         OnPause, OnResume {
 
     protected final Context mContext;
-    protected final PreferenceFragment mFragment;
+    protected final PreferenceFragmentCompat mFragment;
     protected final CachedBluetoothDevice mCachedDevice;
 
-    public BluetoothDetailsController(Context context, PreferenceFragment fragment,
+    public BluetoothDetailsController(Context context, PreferenceFragmentCompat fragment,
             CachedBluetoothDevice device, Lifecycle lifecycle) {
         super(context);
         mContext = context;
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java b/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java
index 16b54bb..9ff3dc2 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsHeaderController.java
@@ -30,6 +30,7 @@
 import com.android.settingslib.bluetooth.LocalBluetoothManager;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 
+import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceScreen;
 
 /**
@@ -42,7 +43,7 @@
     private LocalBluetoothManager mLocalManager;
     private CachedBluetoothDeviceManager mDeviceManager;
 
-    public BluetoothDetailsHeaderController(Context context, PreferenceFragment fragment,
+    public BluetoothDetailsHeaderController(Context context, PreferenceFragmentCompat fragment,
             CachedBluetoothDevice device, Lifecycle lifecycle,
             LocalBluetoothManager bluetoothManager) {
         super(context, fragment, device, lifecycle);
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsMacAddressController.java b/src/com/android/settings/bluetooth/BluetoothDetailsMacAddressController.java
index 0cb7328..b48a59f 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsMacAddressController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsMacAddressController.java
@@ -22,23 +22,24 @@
 import com.android.settingslib.bluetooth.CachedBluetoothDevice;
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.widget.FooterPreference;
-import com.android.settingslib.widget.FooterPreferenceMixin;
+import com.android.settingslib.widget.FooterPreferenceMixinCompat;
 
+import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceScreen;
 
 /**
  * This class adds the device MAC address to a footer.
  */
 public class BluetoothDetailsMacAddressController extends BluetoothDetailsController {
-    FooterPreferenceMixin mFooterPreferenceMixin;
+    FooterPreferenceMixinCompat mFooterPreferenceMixin;
     FooterPreference mFooterPreference;
 
     public BluetoothDetailsMacAddressController(Context context,
-            PreferenceFragment fragment,
+            PreferenceFragmentCompat fragment,
             CachedBluetoothDevice device,
             Lifecycle lifecycle) {
         super(context, fragment, device, lifecycle);
-        mFooterPreferenceMixin = new FooterPreferenceMixin(fragment, lifecycle);
+        mFooterPreferenceMixin = new FooterPreferenceMixinCompat(fragment, lifecycle);
     }
 
     @Override
diff --git a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
index 2290649..a26e961 100644
--- a/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
+++ b/src/com/android/settings/bluetooth/BluetoothDetailsProfilesController.java
@@ -36,6 +36,7 @@
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceCategory;
+import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceScreen;
 import androidx.preference.SwitchPreference;
 
@@ -55,7 +56,7 @@
     private CachedBluetoothDevice mCachedDevice;
     private PreferenceCategory mProfilesContainer;
 
-    public BluetoothDetailsProfilesController(Context context, PreferenceFragment fragment,
+    public BluetoothDetailsProfilesController(Context context, PreferenceFragmentCompat fragment,
             LocalBluetoothManager manager, CachedBluetoothDevice device, Lifecycle lifecycle) {
         super(context, fragment, device, lifecycle);
         mManager = manager;
diff --git a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
index 7083137..719a61b 100644
--- a/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
+++ b/src/com/android/settings/bluetooth/BluetoothDeviceDetailsFragment.java
@@ -120,7 +120,7 @@
         ArrayList<AbstractPreferenceController> controllers = new ArrayList<>();
 
         if (mCachedDevice != null) {
-            Lifecycle lifecycle = getLifecycle();
+            Lifecycle lifecycle = getSettingsLifecycle();
             controllers.add(new BluetoothDetailsHeaderController(context, this, mCachedDevice,
                     lifecycle, mManager));
             controllers.add(new BluetoothDetailsButtonsController(context, this, mCachedDevice,
diff --git a/src/com/android/settings/bluetooth/BluetoothPairingDialog.java b/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
index 8133005..060c174 100644
--- a/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
+++ b/src/com/android/settings/bluetooth/BluetoothPairingDialog.java
@@ -17,7 +17,6 @@
 package com.android.settings.bluetooth;
 
 import android.annotation.Nullable;
-import android.app.Activity;
 import android.bluetooth.BluetoothDevice;
 import android.content.BroadcastReceiver;
 import android.content.Context;
@@ -26,12 +25,13 @@
 import android.os.Bundle;
 
 import androidx.annotation.VisibleForTesting;
+import androidx.fragment.app.FragmentActivity;
 
 /**
  * BluetoothPairingDialog asks the user to enter a PIN / Passkey / simple confirmation
  * for pairing with a remote Bluetooth device. It is an activity that appears as a dialog.
  */
-public class BluetoothPairingDialog extends Activity {
+public class BluetoothPairingDialog extends FragmentActivity {
     public static final String FRAGMENT_TAG = "bluetooth.pairing.fragment";
 
     private BluetoothPairingController mBluetoothPairingController;
@@ -70,7 +70,8 @@
         boolean fragmentFound = true;
         // check if the fragment has been preloaded
         BluetoothPairingDialogFragment bluetoothFragment =
-            (BluetoothPairingDialogFragment) getFragmentManager().findFragmentByTag(FRAGMENT_TAG);
+            (BluetoothPairingDialogFragment) getSupportFragmentManager().
+                    findFragmentByTag(FRAGMENT_TAG);
         // dismiss the fragment if it is already used
         if (bluetoothFragment != null && (bluetoothFragment.isPairingControllerSet()
             || bluetoothFragment.isPairingDialogActivitySet())) {
@@ -86,7 +87,7 @@
         bluetoothFragment.setPairingDialogActivity(this);
         // pass the fragment to the manager when it is created from scratch
         if (!fragmentFound) {
-            bluetoothFragment.show(getFragmentManager(), FRAGMENT_TAG);
+            bluetoothFragment.show(getSupportFragmentManager(), FRAGMENT_TAG);
         }
         /*
          * Leave this registered through pause/resume since we still want to
diff --git a/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java b/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java
index e9d291d..e58ac1f 100644
--- a/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java
+++ b/src/com/android/settings/connecteddevice/AdvancedConnectedDeviceDashboardFragment.java
@@ -66,7 +66,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildControllers(context, getLifecycle());
+        return buildControllers(context, getSettingsLifecycle());
     }
 
     private static List<AbstractPreferenceController> buildControllers(Context context,
diff --git a/src/com/android/settings/connecteddevice/BluetoothDashboardFragment.java b/src/com/android/settings/connecteddevice/BluetoothDashboardFragment.java
index a8d92a9..b5a9ffb 100644
--- a/src/com/android/settings/connecteddevice/BluetoothDashboardFragment.java
+++ b/src/com/android/settings/connecteddevice/BluetoothDashboardFragment.java
@@ -92,7 +92,7 @@
         mSwitchBar = activity.getSwitchBar();
         mController = new BluetoothSwitchPreferenceController(activity,
                 new SwitchBarController(mSwitchBar), mFooterPreference);
-        Lifecycle lifecycle = getLifecycle();
+        Lifecycle lifecycle = getSettingsLifecycle();
         if (lifecycle != null) {
             lifecycle.addObserver(mController);
         }
diff --git a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
index 27dcac4..380e8a5 100644
--- a/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
+++ b/src/com/android/settings/connecteddevice/ConnectedDeviceDashboardFragment.java
@@ -66,7 +66,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle());
+        return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
diff --git a/src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceController.java b/src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceController.java
index 384ec48..e5e1a70 100644
--- a/src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceController.java
+++ b/src/com/android/settings/connecteddevice/DiscoverableFooterPreferenceController.java
@@ -36,7 +36,7 @@
 import com.android.settingslib.core.lifecycle.events.OnPause;
 import com.android.settingslib.core.lifecycle.events.OnResume;
 import com.android.settingslib.widget.FooterPreference;
-import com.android.settingslib.widget.FooterPreferenceMixin;
+import com.android.settingslib.widget.FooterPreferenceMixinCompat;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.PreferenceScreen;
@@ -52,7 +52,7 @@
     BroadcastReceiver mBluetoothChangedReceiver;
     @VisibleForTesting
     LocalBluetoothManager mLocalManager;
-    private FooterPreferenceMixin mFooterPreferenceMixin;
+    private FooterPreferenceMixinCompat mFooterPreferenceMixin;
     private FooterPreference mPreference;
     private LocalBluetoothAdapter mLocalAdapter;
     private AlwaysDiscoverable mAlwaysDiscoverable;
@@ -82,11 +82,12 @@
     }
 
     public void init(DashboardFragment fragment) {
-        mFooterPreferenceMixin = new FooterPreferenceMixin(fragment, fragment.getLifecycle());
+        mFooterPreferenceMixin = new FooterPreferenceMixinCompat(fragment,
+                fragment.getSettingsLifecycle());
     }
 
     @VisibleForTesting
-    void init(FooterPreferenceMixin footerPreferenceMixin, FooterPreference preference,
+    void init(FooterPreferenceMixinCompat footerPreferenceMixin, FooterPreference preference,
             AlwaysDiscoverable alwaysDiscoverable) {
         mFooterPreferenceMixin = footerPreferenceMixin;
         mPreference = preference;
diff --git a/src/com/android/settings/connecteddevice/usb/UsbDefaultFragment.java b/src/com/android/settings/connecteddevice/usb/UsbDefaultFragment.java
index e1b3d70..a37a78c 100644
--- a/src/com/android/settings/connecteddevice/usb/UsbDefaultFragment.java
+++ b/src/com/android/settings/connecteddevice/usb/UsbDefaultFragment.java
@@ -27,7 +27,7 @@
 import com.android.settings.widget.RadioButtonPickerFragment;
 import com.android.settingslib.widget.CandidateInfo;
 import com.android.settingslib.widget.FooterPreference;
-import com.android.settingslib.widget.FooterPreferenceMixin;
+import com.android.settingslib.widget.FooterPreferenceMixinCompat;
 
 import com.google.android.collect.Lists;
 
@@ -49,7 +49,8 @@
     @Override
     public void onCreatePreferences(Bundle savedInstanceState, String rootKey) {
         super.onCreatePreferences(savedInstanceState, rootKey);
-        FooterPreferenceMixin footer = new FooterPreferenceMixin(this, this.getLifecycle());
+        FooterPreferenceMixinCompat footer = new FooterPreferenceMixinCompat(this,
+                this.getSettingsLifecycle());
         FooterPreference pref = footer.createFooterPreference();
         pref.setTitle(R.string.usb_default_info);
     }
diff --git a/src/com/android/settings/connecteddevice/usb/UsbDetailsFragment.java b/src/com/android/settings/connecteddevice/usb/UsbDetailsFragment.java
index 7b1026c..8fd0902 100644
--- a/src/com/android/settings/connecteddevice/usb/UsbDetailsFragment.java
+++ b/src/com/android/settings/connecteddevice/usb/UsbDetailsFragment.java
@@ -85,7 +85,7 @@
         mControllers = createControllerList(context, mUsbBackend, this);
         mUsbReceiver = new UsbConnectionBroadcastReceiver(context, mUsbConnectionListener,
                 mUsbBackend);
-        this.getLifecycle().addObserver(mUsbReceiver);
+        this.getSettingsLifecycle().addObserver(mUsbReceiver);
 
         return new ArrayList<>(mControllers);
     }
diff --git a/src/com/android/settings/core/InstrumentedActivity.java b/src/com/android/settings/core/InstrumentedActivity.java
index 5ec8505..be350a8 100644
--- a/src/com/android/settings/core/InstrumentedActivity.java
+++ b/src/com/android/settings/core/InstrumentedActivity.java
@@ -32,7 +32,7 @@
     protected void onCreate(Bundle savedInstanceState) {
         super.onCreate(savedInstanceState);
         // Mixin that logs visibility change for activity.
-        getLifecycle().addObserver(new VisibilityLoggerMixin(getMetricsCategory(),
+        getSettingsLifecycle().addObserver(new VisibilityLoggerMixin(getMetricsCategory(),
                 FeatureFactory.getFactory(this).getMetricsFeatureProvider()));
     }
 }
diff --git a/src/com/android/settings/core/InstrumentedFragment.java b/src/com/android/settings/core/InstrumentedFragment.java
index b1215b9..427e33a 100644
--- a/src/com/android/settings/core/InstrumentedFragment.java
+++ b/src/com/android/settings/core/InstrumentedFragment.java
@@ -37,8 +37,8 @@
         mVisibilityLoggerMixin = new VisibilityLoggerMixin(getMetricsCategory(),
                 mMetricsFeatureProvider);
         // Mixin that logs visibility change for activity.
-        getLifecycle().addObserver(mVisibilityLoggerMixin);
-        getLifecycle().addObserver(new SurveyMixin(this, getClass().getSimpleName()));
+        getSettingsLifecycle().addObserver(mVisibilityLoggerMixin);
+        getSettingsLifecycle().addObserver(new SurveyMixin(this, getClass().getSimpleName()));
         super.onAttach(context);
     }
 
diff --git a/src/com/android/settings/core/InstrumentedPreferenceFragment.java b/src/com/android/settings/core/InstrumentedPreferenceFragment.java
index 30157e9..2bcf895 100644
--- a/src/com/android/settings/core/InstrumentedPreferenceFragment.java
+++ b/src/com/android/settings/core/InstrumentedPreferenceFragment.java
@@ -53,8 +53,8 @@
         // Mixin that logs visibility change for activity.
         mVisibilityLoggerMixin = new VisibilityLoggerMixin(getMetricsCategory(),
                 mMetricsFeatureProvider);
-        getLifecycle().addObserver(mVisibilityLoggerMixin);
-        getLifecycle().addObserver(new SurveyMixin(this, getClass().getSimpleName()));
+        getSettingsLifecycle().addObserver(mVisibilityLoggerMixin);
+        getSettingsLifecycle().addObserver(new SurveyMixin(this, getClass().getSimpleName()));
         super.onAttach(context);
     }
 
diff --git a/src/com/android/settings/dashboard/DashboardAdapter.java b/src/com/android/settings/dashboard/DashboardAdapter.java
index 936164c..a76414d 100644
--- a/src/com/android/settings/dashboard/DashboardAdapter.java
+++ b/src/com/android/settings/dashboard/DashboardAdapter.java
@@ -45,7 +45,7 @@
 import com.android.settingslib.drawer.DashboardCategory;
 import com.android.settingslib.drawer.Tile;
 import com.android.settingslib.drawer.TileUtils;
-import com.android.settingslib.suggestions.SuggestionControllerMixin;
+import com.android.settingslib.suggestions.SuggestionControllerMixinCompat;
 import com.android.settingslib.utils.IconCache;
 
 import java.util.List;
@@ -84,7 +84,7 @@
     };
 
     public DashboardAdapter(Context context, Bundle savedInstanceState,
-            List<Condition> conditions, SuggestionControllerMixin suggestionControllerMixin,
+            List<Condition> conditions, SuggestionControllerMixinCompat suggestionControllerMixin,
             Lifecycle lifecycle) {
 
         DashboardCategory category = null;
diff --git a/src/com/android/settings/dashboard/DashboardFragment.java b/src/com/android/settings/dashboard/DashboardFragment.java
index 67ffb76..2a962c1 100644
--- a/src/com/android/settings/dashboard/DashboardFragment.java
+++ b/src/com/android/settings/dashboard/DashboardFragment.java
@@ -89,7 +89,7 @@
         controllers.addAll(uniqueControllerFromXml);
 
         // And wire up with lifecycle.
-        final Lifecycle lifecycle = getLifecycle();
+        final Lifecycle lifecycle = getSettingsLifecycle();
         uniqueControllerFromXml
                 .stream()
                 .filter(controller -> controller instanceof LifecycleObserver)
diff --git a/src/com/android/settings/dashboard/DashboardSummary.java b/src/com/android/settings/dashboard/DashboardSummary.java
index 00e18c5..c6b69e9 100644
--- a/src/com/android/settings/dashboard/DashboardSummary.java
+++ b/src/com/android/settings/dashboard/DashboardSummary.java
@@ -41,7 +41,7 @@
 import com.android.settings.widget.ActionBarShadowController;
 import com.android.settingslib.drawer.CategoryKey;
 import com.android.settingslib.drawer.DashboardCategory;
-import com.android.settingslib.suggestions.SuggestionControllerMixin;
+import com.android.settingslib.suggestions.SuggestionControllerMixinCompat;
 import com.android.settingslib.utils.ThreadUtils;
 
 import java.util.List;
@@ -53,7 +53,7 @@
 
 public class DashboardSummary extends InstrumentedFragment
         implements CategoryListener, ConditionListener,
-        FocusListener, SuggestionControllerMixin.SuggestionControllerHost {
+        FocusListener, SuggestionControllerMixinCompat.SuggestionControllerHost {
     public static final boolean DEBUG = false;
     private static final boolean DEBUG_TIMING = false;
     private static final int MAX_WAIT_MILLIS = 3000;
@@ -69,7 +69,7 @@
     private SummaryLoader mSummaryLoader;
     private ConditionManager mConditionManager;
     private LinearLayoutManager mLayoutManager;
-    private SuggestionControllerMixin mSuggestionControllerMixin;
+    private SuggestionControllerMixinCompat mSuggestionControllerMixin;
     private DashboardFeatureProvider mDashboardFeatureProvider;
     @VisibleForTesting
     boolean mIsOnCategoriesChangedCalled;
@@ -86,14 +86,14 @@
     @Override
     public void onAttach(Context context) {
         super.onAttach(context);
-        Log.d(TAG, "Creating SuggestionControllerMixin");
+        Log.d(TAG, "Creating SuggestionControllerMixinCompat");
         final SuggestionFeatureProvider suggestionFeatureProvider = FeatureFactory
                 .getFactory(context)
                 .getSuggestionFeatureProvider(context);
         if (suggestionFeatureProvider.isSuggestionEnabled(context)) {
-            mSuggestionControllerMixin = new SuggestionControllerMixin(context, this /* host */,
-                    getLifecycle(), suggestionFeatureProvider
-                    .getSuggestionServiceComponent());
+            mSuggestionControllerMixin = new SuggestionControllerMixinCompat(
+                    context, this /* host */, getSettingsLifecycle(),
+                    suggestionFeatureProvider.getSuggestionServiceComponent());
         }
     }
 
@@ -117,7 +117,7 @@
         mSummaryLoader = new SummaryLoader(activity, CategoryKey.CATEGORY_HOMEPAGE);
 
         mConditionManager = ConditionManager.get(activity, false);
-        getLifecycle().addObserver(mConditionManager);
+        getSettingsLifecycle().addObserver(mConditionManager);
         if (savedInstanceState != null) {
             mIsOnCategoriesChangedCalled =
                     savedInstanceState.getBoolean(STATE_CATEGORIES_CHANGE_CALLED);
@@ -209,11 +209,13 @@
         mDashboard.setListener(this);
         mDashboard.setItemAnimator(new DashboardItemAnimator());
         mAdapter = new DashboardAdapter(getContext(), bundle,
-                mConditionManager.getConditions(), mSuggestionControllerMixin, getLifecycle());
+                mConditionManager.getConditions(), mSuggestionControllerMixin,
+                getSettingsLifecycle());
         mDashboard.setAdapter(mAdapter);
         mSummaryLoader.setSummaryConsumer(mAdapter);
         ActionBarShadowController.attachToRecyclerView(
-                getActivity().findViewById(R.id.search_bar_container), getLifecycle(), mDashboard);
+                getActivity().findViewById(R.id.search_bar_container), getSettingsLifecycle(),
+                mDashboard);
         rebuildUI();
         if (DEBUG_TIMING) {
             Log.d(TAG, "onCreateView took "
diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java b/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java
index 9b964e1..95d1502 100644
--- a/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java
+++ b/src/com/android/settings/dashboard/suggestions/SuggestionAdapter.java
@@ -41,7 +41,7 @@
 import com.android.settingslib.core.lifecycle.Lifecycle;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnSaveInstanceState;
-import com.android.settingslib.suggestions.SuggestionControllerMixin;
+import com.android.settingslib.suggestions.SuggestionControllerMixinCompat;
 import com.android.settingslib.utils.IconCache;
 
 import java.util.ArrayList;
@@ -63,7 +63,7 @@
     private final IconCache mCache;
     private final ArrayList<String> mSuggestionsShownLogged;
     private final SuggestionFeatureProvider mSuggestionFeatureProvider;
-    private final SuggestionControllerMixin mSuggestionControllerMixin;
+    private final SuggestionControllerMixinCompat mSuggestionControllerMixin;
     private final Callback mCallback;
     private final CardConfig mConfig;
 
@@ -76,8 +76,9 @@
         void onSuggestionClosed(Suggestion suggestion);
     }
 
-    public SuggestionAdapter(Context context, SuggestionControllerMixin suggestionControllerMixin,
-        Bundle savedInstanceState, Callback callback, Lifecycle lifecycle) {
+    public SuggestionAdapter(Context context,
+            SuggestionControllerMixinCompat suggestionControllerMixin, Bundle savedInstanceState,
+            Callback callback, Lifecycle lifecycle) {
         mContext = context;
         mSuggestionControllerMixin = suggestionControllerMixin;
         mCache = new IconCache(context);
diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java
index ce2d118..1564b9f 100644
--- a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java
+++ b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProvider.java
@@ -23,7 +23,7 @@
 import android.util.Pair;
 
 import com.android.settingslib.drawer.Tile;
-import com.android.settingslib.suggestions.SuggestionControllerMixin;
+import com.android.settingslib.suggestions.SuggestionControllerMixinCompat;
 
 import java.util.List;
 
@@ -63,7 +63,7 @@
     /**
      * Dismisses a suggestion.
      */
-    void dismissSuggestion(Context context, SuggestionControllerMixin suggestionMixin,
+    void dismissSuggestion(Context context, SuggestionControllerMixinCompat suggestionMixin,
             Suggestion suggestion);
 
     /**
diff --git a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java
index 14e4c36..1601f19 100644
--- a/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java
+++ b/src/com/android/settings/dashboard/suggestions/SuggestionFeatureProviderImpl.java
@@ -39,7 +39,7 @@
 import com.android.settings.wifi.calling.WifiCallingSuggestionActivity;
 import com.android.settingslib.core.instrumentation.MetricsFeatureProvider;
 import com.android.settingslib.drawer.Tile;
-import com.android.settingslib.suggestions.SuggestionControllerMixin;
+import com.android.settingslib.suggestions.SuggestionControllerMixinCompat;
 
 import java.util.List;
 
@@ -119,7 +119,7 @@
     }
 
     @Override
-    public void dismissSuggestion(Context context, SuggestionControllerMixin mixin,
+    public void dismissSuggestion(Context context, SuggestionControllerMixinCompat mixin,
             Suggestion suggestion) {
         if (mixin == null || suggestion == null || context == null) {
             return;
diff --git a/src/com/android/settings/datausage/AppDataUsage.java b/src/com/android/settings/datausage/AppDataUsage.java
index a7ec7de..ed1920c 100644
--- a/src/com/android/settings/datausage/AppDataUsage.java
+++ b/src/com/android/settings/datausage/AppDataUsage.java
@@ -45,7 +45,7 @@
 import com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 import com.android.settingslib.RestrictedSwitchPreference;
 import com.android.settingslib.net.ChartData;
-import com.android.settingslib.net.ChartDataLoader;
+import com.android.settingslib.net.ChartDataLoaderCompat;
 import com.android.settingslib.net.UidDetail;
 import com.android.settingslib.net.UidDetailProvider;
 
@@ -222,7 +222,7 @@
         }
         mPolicy = services.mPolicyEditor.getPolicy(mTemplate);
         getLoaderManager().restartLoader(LOADER_CHART_DATA,
-                ChartDataLoader.buildArgs(mTemplate, mAppItem), mChartDataCallbacks);
+                ChartDataLoaderCompat.buildArgs(mTemplate, mAppItem), mChartDataCallbacks);
         updatePrefs();
     }
 
@@ -345,7 +345,7 @@
         final Activity activity = getActivity();
         final Preference pref = EntityHeaderController
                 .newInstance(activity, this, null /* header */)
-                .setRecyclerView(getListView(), getLifecycle())
+                .setRecyclerView(getListView(), getSettingsLifecycle())
                 .setUid(uid)
                 .setHasAppInfoLink(showInfoButton)
                 .setButtonActions(EntityHeaderController.ActionType.ACTION_NONE,
@@ -383,7 +383,7 @@
             new LoaderManager.LoaderCallbacks<ChartData>() {
         @Override
         public Loader<ChartData> onCreateLoader(int id, Bundle args) {
-            return new ChartDataLoader(getActivity(), mStatsSession, args);
+            return new ChartDataLoaderCompat(getActivity(), mStatsSession, args);
         }
 
         @Override
diff --git a/src/com/android/settings/datausage/AppPrefLoader.java b/src/com/android/settings/datausage/AppPrefLoader.java
index 63c5c53..501d142 100644
--- a/src/com/android/settings/datausage/AppPrefLoader.java
+++ b/src/com/android/settings/datausage/AppPrefLoader.java
@@ -21,11 +21,11 @@
 import android.content.pm.PackageManager;
 import android.util.ArraySet;
 
-import com.android.settingslib.utils.AsyncLoader;
+import com.android.settingslib.utils.AsyncLoaderCompat;
 
 import androidx.preference.Preference;
 
-public class AppPrefLoader extends AsyncLoader<ArraySet<Preference>> {
+public class AppPrefLoader extends AsyncLoaderCompat<ArraySet<Preference>> {
     private ArraySet<String> mPackages;
     private PackageManager mPackageManager;
     private Context mPrefContext;
diff --git a/src/com/android/settings/datausage/CellDataPreference.java b/src/com/android/settings/datausage/CellDataPreference.java
index 508b2d0..e46a235 100644
--- a/src/com/android/settings/datausage/CellDataPreference.java
+++ b/src/com/android/settings/datausage/CellDataPreference.java
@@ -14,7 +14,6 @@
 
 package com.android.settings.datausage;
 
-import android.app.AlertDialog;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.database.ContentObserver;
@@ -37,15 +36,16 @@
 import com.android.settings.R;
 import com.android.settings.Utils;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settingslib.CustomDialogPreference;
+import com.android.settingslib.CustomDialogPreferenceCompat;
 
 import java.util.List;
 
 import androidx.annotation.VisibleForTesting;
+import androidx.appcompat.app.AlertDialog.Builder;
 import androidx.core.content.res.TypedArrayUtils;
 import androidx.preference.PreferenceViewHolder;
 
-public class CellDataPreference extends CustomDialogPreference implements TemplatePreference {
+public class CellDataPreference extends CustomDialogPreferenceCompat implements TemplatePreference {
 
     private static final String TAG = "CellDataPreference";
 
@@ -196,7 +196,7 @@
     }
 
     @Override
-    protected void onPrepareDialogBuilder(AlertDialog.Builder builder,
+    protected void onPrepareDialogBuilder(Builder builder,
             DialogInterface.OnClickListener listener) {
         if (mMultiSimDialog) {
             showMultiSimDialog(builder, listener);
@@ -205,7 +205,7 @@
         }
     }
 
-    private void showDisableDialog(AlertDialog.Builder builder,
+    private void showDisableDialog(Builder builder,
             DialogInterface.OnClickListener listener) {
         builder.setTitle(null)
                 .setMessage(R.string.data_usage_disable_mobile)
@@ -213,7 +213,7 @@
                 .setNegativeButton(android.R.string.cancel, null);
     }
 
-    private void showMultiSimDialog(AlertDialog.Builder builder,
+    private void showMultiSimDialog(Builder builder,
             DialogInterface.OnClickListener listener) {
         final SubscriptionInfo currentSir = mSubscriptionManager.getActiveSubscriptionInfo(mSubId);
         final SubscriptionInfo nextSir = mSubscriptionManager.getDefaultDataSubscriptionInfo();
diff --git a/src/com/android/settings/datausage/DataSaverSummary.java b/src/com/android/settings/datausage/DataSaverSummary.java
index 97334aa..24e8740 100644
--- a/src/com/android/settings/datausage/DataSaverSummary.java
+++ b/src/com/android/settings/datausage/DataSaverSummary.java
@@ -70,7 +70,7 @@
                 (Application) getContext().getApplicationContext());
         mDataSaverBackend = new DataSaverBackend(getContext());
         mDataUsageBridge = new AppStateDataUsageBridge(mApplicationsState, this, mDataSaverBackend);
-        mSession = mApplicationsState.newSession(this, getLifecycle());
+        mSession = mApplicationsState.newSession(this, getSettingsLifecycle());
     }
 
     @Override
diff --git a/src/com/android/settings/datausage/DataUsageList.java b/src/com/android/settings/datausage/DataUsageList.java
index 032f337..d912462 100644
--- a/src/com/android/settings/datausage/DataUsageList.java
+++ b/src/com/android/settings/datausage/DataUsageList.java
@@ -57,8 +57,8 @@
 import com.android.settings.widget.LoadingViewController;
 import com.android.settingslib.AppItem;
 import com.android.settingslib.net.ChartData;
-import com.android.settingslib.net.ChartDataLoader;
-import com.android.settingslib.net.SummaryForAllUidLoader;
+import com.android.settingslib.net.ChartDataLoaderCompat;
+import com.android.settingslib.net.SummaryForAllUidLoaderCompat;
 import com.android.settingslib.net.UidDetailProvider;
 
 import java.util.ArrayList;
@@ -262,7 +262,7 @@
         // TODO: consider chaining two loaders together instead of reloading
         // network history when showing app detail.
         getLoaderManager().restartLoader(LOADER_CHART_DATA,
-                ChartDataLoader.buildArgs(mTemplate, null), mChartDataCallbacks);
+                ChartDataLoaderCompat.buildArgs(mTemplate, null), mChartDataCallbacks);
 
         // detail mode can change visible menus, invalidate
         getActivity().invalidateOptionsMenu();
@@ -326,7 +326,7 @@
 
         // kick off loader for detailed stats
         getLoaderManager().restartLoader(LOADER_SUMMARY,
-                SummaryForAllUidLoader.buildArgs(mTemplate, start, end), mSummaryCallbacks);
+                SummaryForAllUidLoaderCompat.buildArgs(mTemplate, start, end), mSummaryCallbacks);
 
         final long totalBytes = entry != null ? entry.rxBytes + entry.txBytes : 0;
         final CharSequence totalPhrase = DataUsageUtils.formatDataUsage(context, totalBytes);
@@ -548,7 +548,7 @@
             ChartData>() {
         @Override
         public Loader<ChartData> onCreateLoader(int id, Bundle args) {
-            return new ChartDataLoader(getActivity(), mStatsSession, args);
+            return new ChartDataLoaderCompat(getActivity(), mStatsSession, args);
         }
 
         @Override
@@ -572,7 +572,7 @@
             NetworkStats>() {
         @Override
         public Loader<NetworkStats> onCreateLoader(int id, Bundle args) {
-            return new SummaryForAllUidLoader(getActivity(), mStatsSession, args);
+            return new SummaryForAllUidLoaderCompat(getActivity(), mStatsSession, args);
         }
 
         @Override
diff --git a/src/com/android/settings/datausage/DataUsageSummary.java b/src/com/android/settings/datausage/DataUsageSummary.java
index c1f9f52..d8f8f02 100644
--- a/src/com/android/settings/datausage/DataUsageSummary.java
+++ b/src/com/android/settings/datausage/DataUsageSummary.java
@@ -141,9 +141,9 @@
         final Activity activity = getActivity();
         final ArrayList<AbstractPreferenceController> controllers = new ArrayList<>();
         mSummaryController =
-                new DataUsageSummaryPreferenceController(activity, getLifecycle(), this);
+                new DataUsageSummaryPreferenceController(activity, getSettingsLifecycle(), this);
         controllers.add(mSummaryController);
-        getLifecycle().addObserver(mSummaryController);
+        getSettingsLifecycle().addObserver(mSummaryController);
         return controllers;
     }
 
diff --git a/src/com/android/settings/datausage/UnrestrictedDataAccess.java b/src/com/android/settings/datausage/UnrestrictedDataAccess.java
index b8d47b1..ff516ee 100644
--- a/src/com/android/settings/datausage/UnrestrictedDataAccess.java
+++ b/src/com/android/settings/datausage/UnrestrictedDataAccess.java
@@ -93,7 +93,7 @@
         super.onAttach(context);
         mFilter = mShowSystem ? ApplicationsState.FILTER_ALL_ENABLED
                 : ApplicationsState.FILTER_DOWNLOADED_AND_LAUNCHER;
-        use(UnrestrictedDataAccessPreferenceController.class).setSession(getLifecycle());
+        use(UnrestrictedDataAccessPreferenceController.class).setSession(getSettingsLifecycle());
         use(UnrestrictedDataAccessPreferenceController.class).setFilter(mFilter);
     }
 
diff --git a/src/com/android/settings/datetime/timezone/model/TimeZoneDataLoader.java b/src/com/android/settings/datetime/timezone/model/TimeZoneDataLoader.java
index fae3df6..7ca157e 100644
--- a/src/com/android/settings/datetime/timezone/model/TimeZoneDataLoader.java
+++ b/src/com/android/settings/datetime/timezone/model/TimeZoneDataLoader.java
@@ -19,12 +19,12 @@
 import android.content.Context;
 import android.os.Bundle;
 
-import com.android.settingslib.utils.AsyncLoader;
+import com.android.settingslib.utils.AsyncLoaderCompat;
 
 import androidx.loader.app.LoaderManager;
 import androidx.loader.content.Loader;
 
-public class TimeZoneDataLoader extends AsyncLoader<TimeZoneData> {
+public class TimeZoneDataLoader extends AsyncLoaderCompat<TimeZoneData> {
 
     public TimeZoneDataLoader(Context context) {
         super(context);
diff --git a/src/com/android/settings/development/BluetoothA2dpHwOffloadRebootDialog.java b/src/com/android/settings/development/BluetoothA2dpHwOffloadRebootDialog.java
index ddd9021..03e1143 100644
--- a/src/com/android/settings/development/BluetoothA2dpHwOffloadRebootDialog.java
+++ b/src/com/android/settings/development/BluetoothA2dpHwOffloadRebootDialog.java
@@ -35,7 +35,7 @@
 
     public static void show(DevelopmentSettingsDashboardFragment host,
             BluetoothA2dpHwOffloadPreferenceController controller) {
-        final FragmentManager manager = host.getActivity().getFragmentManager();
+        final FragmentManager manager = host.getActivity().getSupportFragmentManager();
         if (manager.findFragmentByTag(TAG) == null) {
             final BluetoothA2dpHwOffloadRebootDialog dialog =
                     new BluetoothA2dpHwOffloadRebootDialog();
diff --git a/src/com/android/settings/development/ClearAdbKeysWarningDialog.java b/src/com/android/settings/development/ClearAdbKeysWarningDialog.java
index 43e7c8f..e930759 100644
--- a/src/com/android/settings/development/ClearAdbKeysWarningDialog.java
+++ b/src/com/android/settings/development/ClearAdbKeysWarningDialog.java
@@ -34,7 +34,7 @@
     public static final String TAG = "ClearAdbKeysDlg";
 
     public static void show(Fragment host) {
-        final FragmentManager manager = host.getActivity().getFragmentManager();
+        final FragmentManager manager = host.getActivity().getSupportFragmentManager();
         if (manager.findFragmentByTag(TAG) == null) {
             final ClearAdbKeysWarningDialog dialog =
                     new ClearAdbKeysWarningDialog();
diff --git a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
index c97ed52..82ca54b 100644
--- a/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
+++ b/src/com/android/settings/development/DevelopmentSettingsDashboardFragment.java
@@ -166,7 +166,8 @@
         // Set up master switch
         mSwitchBar = ((SettingsActivity) getActivity()).getSwitchBar();
         mSwitchBarController = new DevelopmentSwitchBarController(
-                this /* DevelopmentSettings */, mSwitchBar, mIsAvailable, getLifecycle());
+                this /* DevelopmentSettings */, mSwitchBar, mIsAvailable,
+                getSettingsLifecycle());
         mSwitchBar.show();
 
         // Restore UI state based on whether developer options is enabled
@@ -318,8 +319,8 @@
             mPreferenceControllers = new ArrayList<>();
             return null;
         }
-        mPreferenceControllers = buildPreferenceControllers(context, getActivity(), getLifecycle(),
-                this /* devOptionsDashboardFragment */,
+        mPreferenceControllers = buildPreferenceControllers(context, getActivity(),
+                getSettingsLifecycle(), this /* devOptionsDashboardFragment */,
                 new BluetoothA2dpConfigStore());
         return mPreferenceControllers;
     }
diff --git a/src/com/android/settings/development/DisableLogPersistWarningDialog.java b/src/com/android/settings/development/DisableLogPersistWarningDialog.java
index 7223d8e..fbe2b05 100644
--- a/src/com/android/settings/development/DisableLogPersistWarningDialog.java
+++ b/src/com/android/settings/development/DisableLogPersistWarningDialog.java
@@ -38,7 +38,7 @@
             return;
         }
         final Fragment hostFragment = (Fragment) host;
-        final FragmentManager manager = hostFragment.getActivity().getFragmentManager();
+        final FragmentManager manager = hostFragment.getActivity().getSupportFragmentManager();
         if (manager.findFragmentByTag(TAG) == null) {
             final DisableLogPersistWarningDialog dialog =
                     new DisableLogPersistWarningDialog();
diff --git a/src/com/android/settings/development/EnableAdbWarningDialog.java b/src/com/android/settings/development/EnableAdbWarningDialog.java
index 1dac782..e1354ce 100644
--- a/src/com/android/settings/development/EnableAdbWarningDialog.java
+++ b/src/com/android/settings/development/EnableAdbWarningDialog.java
@@ -34,7 +34,7 @@
     public static final String TAG = "EnableAdbDialog";
 
     public static void show(Fragment host) {
-        final FragmentManager manager = host.getActivity().getFragmentManager();
+        final FragmentManager manager = host.getActivity().getSupportFragmentManager();
         if (manager.findFragmentByTag(TAG) == null) {
             final EnableAdbWarningDialog dialog = new EnableAdbWarningDialog();
             dialog.setTargetFragment(host, 0 /* requestCode */);
diff --git a/src/com/android/settings/development/EnableDevelopmentSettingWarningDialog.java b/src/com/android/settings/development/EnableDevelopmentSettingWarningDialog.java
index 667f621..51532f3 100644
--- a/src/com/android/settings/development/EnableDevelopmentSettingWarningDialog.java
+++ b/src/com/android/settings/development/EnableDevelopmentSettingWarningDialog.java
@@ -37,7 +37,7 @@
         final EnableDevelopmentSettingWarningDialog dialog =
                 new EnableDevelopmentSettingWarningDialog();
         dialog.setTargetFragment(host, 0 /* requestCode */);
-        final FragmentManager manager = host.getActivity().getFragmentManager();
+        final FragmentManager manager = host.getActivity().getSupportFragmentManager();
         if (manager.findFragmentByTag(TAG) == null) {
             dialog.show(manager, TAG);
         }
diff --git a/src/com/android/settings/development/EnableOemUnlockSettingWarningDialog.java b/src/com/android/settings/development/EnableOemUnlockSettingWarningDialog.java
index 64a1b6b..09d2ffe 100644
--- a/src/com/android/settings/development/EnableOemUnlockSettingWarningDialog.java
+++ b/src/com/android/settings/development/EnableOemUnlockSettingWarningDialog.java
@@ -34,7 +34,7 @@
     public static final String TAG = "EnableOemUnlockDlg";
 
     public static void show(Fragment host) {
-        final FragmentManager manager = host.getActivity().getFragmentManager();
+        final FragmentManager manager = host.getActivity().getSupportFragmentManager();
         if (manager.findFragmentByTag(TAG) == null) {
             final EnableOemUnlockSettingWarningDialog dialog =
                     new EnableOemUnlockSettingWarningDialog();
diff --git a/src/com/android/settings/development/featureflags/FeatureFlagFooterPreferenceController.java b/src/com/android/settings/development/featureflags/FeatureFlagFooterPreferenceController.java
index a86b8bb..a0d7036 100644
--- a/src/com/android/settings/development/featureflags/FeatureFlagFooterPreferenceController.java
+++ b/src/com/android/settings/development/featureflags/FeatureFlagFooterPreferenceController.java
@@ -22,18 +22,18 @@
 import com.android.settings.core.BasePreferenceController;
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
-import com.android.settingslib.widget.FooterPreferenceMixin;
+import com.android.settingslib.widget.FooterPreferenceMixinCompat;
 
 public class FeatureFlagFooterPreferenceController extends BasePreferenceController
         implements LifecycleObserver, OnStart {
 
-    private FooterPreferenceMixin mFooterMixin;
+    private FooterPreferenceMixinCompat mFooterMixin;
 
     public FeatureFlagFooterPreferenceController(Context context) {
         super(context, "feature_flag_footer_pref");
     }
 
-    public void setFooterMixin(FooterPreferenceMixin mixin) {
+    public void setFooterMixin(FooterPreferenceMixinCompat mixin) {
         mFooterMixin = mixin;
     }
 
diff --git a/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java b/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java
index 038b149..0307727 100644
--- a/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java
+++ b/src/com/android/settings/development/featureflags/FeatureFlagsDashboard.java
@@ -65,7 +65,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPrefControllers(context, getLifecycle());
+        return buildPrefControllers(context, getSettingsLifecycle());
     }
 
     private static List<AbstractPreferenceController> buildPrefControllers(Context context,
diff --git a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
index a200c3a..8d6714d 100644
--- a/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
+++ b/src/com/android/settings/deviceinfo/PrivateVolumeSettings.java
@@ -203,7 +203,7 @@
         setTitle();
 
         // Valid options may have changed
-        getFragmentManager().invalidateOptionsMenu();
+        getActivity().invalidateOptionsMenu();
 
         final Context context = getActivity();
         final PreferenceScreen screen = getPreferenceScreen();
diff --git a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
index a44e9a9..03a2ada 100644
--- a/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
+++ b/src/com/android/settings/deviceinfo/StorageDashboardFragment.java
@@ -105,7 +105,7 @@
     void initializeOptionsMenu(Activity activity) {
         mOptionMenuController = new PrivateVolumeOptionMenuController(
                 activity, mVolume, activity.getPackageManager());
-        getLifecycle().addObserver(mOptionMenuController);
+        getSettingsLifecycle().addObserver(mOptionMenuController);
         setHasOptionsMenu(true);
         activity.invalidateOptionsMenu();
     }
@@ -119,7 +119,7 @@
         final Activity activity = getActivity();
         EntityHeaderController.newInstance(activity, this /*fragment*/,
                 null /* header view */)
-                .setRecyclerView(getListView(), getLifecycle())
+                .setRecyclerView(getListView(), getSettingsLifecycle())
                 .styleActionBar(activity);
 
     }
diff --git a/src/com/android/settings/deviceinfo/StorageWizardBase.java b/src/com/android/settings/deviceinfo/StorageWizardBase.java
index cae39e2..c6d0b2f 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardBase.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardBase.java
@@ -22,7 +22,6 @@
 
 import android.annotation.LayoutRes;
 import android.annotation.NonNull;
-import android.app.Activity;
 import android.content.Intent;
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
@@ -48,7 +47,9 @@
 import java.util.List;
 import java.util.Objects;
 
-public abstract class StorageWizardBase extends Activity {
+import androidx.fragment.app.FragmentActivity;
+
+public abstract class StorageWizardBase extends FragmentActivity {
     protected static final String EXTRA_FORMAT_FORGET_UUID = "format_forget_uuid";
     protected static final String EXTRA_FORMAT_PRIVATE = "format_private";
     protected static final String EXTRA_FORMAT_SLOW = "format_slow";
diff --git a/src/com/android/settings/deviceinfo/StorageWizardFormatConfirm.java b/src/com/android/settings/deviceinfo/StorageWizardFormatConfirm.java
index 51e17c6..85e5929 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardFormatConfirm.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardFormatConfirm.java
@@ -20,7 +20,6 @@
 import static com.android.settings.deviceinfo.StorageWizardBase.EXTRA_FORMAT_FORGET_UUID;
 import static com.android.settings.deviceinfo.StorageWizardBase.EXTRA_FORMAT_PRIVATE;
 
-import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.Context;
@@ -34,22 +33,24 @@
 import com.android.settings.R;
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
+import androidx.fragment.app.FragmentActivity;
+
 public class StorageWizardFormatConfirm extends InstrumentedDialogFragment {
     private static final String TAG_FORMAT_WARNING = "format_warning";
 
-    public static void showPublic(Activity activity, String diskId) {
+    public static void showPublic(FragmentActivity activity, String diskId) {
         show(activity, diskId, null, false);
     }
 
-    public static void showPublic(Activity activity, String diskId, String forgetUuid) {
+    public static void showPublic(FragmentActivity activity, String diskId, String forgetUuid) {
         show(activity, diskId, forgetUuid, false);
     }
 
-    public static void showPrivate(Activity activity, String diskId) {
+    public static void showPrivate(FragmentActivity activity, String diskId) {
         show(activity, diskId, null, true);
     }
 
-    private static void show(Activity activity, String diskId, String formatForgetUuid,
+    private static void show(FragmentActivity activity, String diskId, String formatForgetUuid,
             boolean formatPrivate) {
         final Bundle args = new Bundle();
         args.putString(EXTRA_DISK_ID, diskId);
@@ -58,7 +59,8 @@
 
         final StorageWizardFormatConfirm fragment = new StorageWizardFormatConfirm();
         fragment.setArguments(args);
-        fragment.showAllowingStateLoss(activity.getFragmentManager(), TAG_FORMAT_WARNING);
+        // TODO (b/111150236) : Need to check it again.
+        fragment.show(activity.getSupportFragmentManager(), TAG_FORMAT_WARNING);
     }
 
     @Override
diff --git a/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java b/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java
index d7949a2..287cc3f 100644
--- a/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java
+++ b/src/com/android/settings/deviceinfo/StorageWizardFormatProgress.java
@@ -59,7 +59,8 @@
         setHeaderText(R.string.storage_wizard_format_progress_title, getDiskShortDescription());
         setBodyText(R.string.storage_wizard_format_progress_body, getDiskDescription());
 
-        mTask = (PartitionTask) getLastNonConfigurationInstance();
+        // TODO (b/111151113) : Need to check it again.
+        mTask = (PartitionTask) getLastCustomNonConfigurationInstance();
         if (mTask == null) {
             mTask = new PartitionTask();
             mTask.setActivity(this);
@@ -68,9 +69,9 @@
             mTask.setActivity(this);
         }
     }
-
+    // TODO (b/111151113) : Need to check it again.
     @Override
-    public Object onRetainNonConfigurationInstance() {
+    public Object onRetainCustomNonConfigurationInstance() {
         return mTask;
     }
 
diff --git a/src/com/android/settings/deviceinfo/aboutphone/DeviceNameWarningDialog.java b/src/com/android/settings/deviceinfo/aboutphone/DeviceNameWarningDialog.java
index c016cb6..45f39d9 100644
--- a/src/com/android/settings/deviceinfo/aboutphone/DeviceNameWarningDialog.java
+++ b/src/com/android/settings/deviceinfo/aboutphone/DeviceNameWarningDialog.java
@@ -36,7 +36,7 @@
     public static final String TAG = "DeviceNameWarningDlg";
 
     public static void show(MyDeviceInfoFragment host) {
-        final FragmentManager manager = host.getActivity().getFragmentManager();
+        final FragmentManager manager = host.getActivity().getSupportFragmentManager();
         if (manager.findFragmentByTag(TAG) != null) {
             return;
         }
diff --git a/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java b/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java
index 00be8be..976a254 100644
--- a/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java
+++ b/src/com/android/settings/deviceinfo/aboutphone/MyDeviceInfoFragment.java
@@ -104,7 +104,7 @@
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
         return buildPreferenceControllers(context, getActivity(), this /* fragment */,
-                getLifecycle());
+                getSettingsLifecycle());
     }
 
     private static List<AbstractPreferenceController> buildPreferenceControllers(
@@ -156,7 +156,7 @@
         final Bundle bundle = getArguments();
         final EntityHeaderController controller = EntityHeaderController
                 .newInstance(context, this, appSnippet)
-                .setRecyclerView(getListView(), getLifecycle())
+                .setRecyclerView(getListView(), getSettingsLifecycle())
                 .setButtonActions(EntityHeaderController.ActionType.ACTION_NONE,
                         EntityHeaderController.ActionType.ACTION_NONE);
 
diff --git a/src/com/android/settings/deviceinfo/storage/StorageAsyncLoader.java b/src/com/android/settings/deviceinfo/storage/StorageAsyncLoader.java
index 5001548..9d10a1d 100644
--- a/src/com/android/settings/deviceinfo/storage/StorageAsyncLoader.java
+++ b/src/com/android/settings/deviceinfo/storage/StorageAsyncLoader.java
@@ -33,7 +33,7 @@
 import android.util.SparseArray;
 
 import com.android.settingslib.applications.StorageStatsSource;
-import com.android.settingslib.utils.AsyncLoader;
+import com.android.settingslib.utils.AsyncLoaderCompat;
 
 import java.io.IOException;
 import java.util.Collections;
@@ -45,7 +45,7 @@
  * users
  */
 public class StorageAsyncLoader
-        extends AsyncLoader<SparseArray<StorageAsyncLoader.AppsStorageResult>> {
+        extends AsyncLoaderCompat<SparseArray<StorageAsyncLoader.AppsStorageResult>> {
     private UserManager mUserManager;
     private static final String TAG = "StorageAsyncLoader";
 
diff --git a/src/com/android/settings/deviceinfo/storage/UserIconLoader.java b/src/com/android/settings/deviceinfo/storage/UserIconLoader.java
index e85bf08..8273e68 100644
--- a/src/com/android/settings/deviceinfo/storage/UserIconLoader.java
+++ b/src/com/android/settings/deviceinfo/storage/UserIconLoader.java
@@ -24,12 +24,12 @@
 
 import com.android.internal.util.Preconditions;
 import com.android.settings.Utils;
-import com.android.settingslib.utils.AsyncLoader;
+import com.android.settingslib.utils.AsyncLoaderCompat;
 
 /**
  * Fetches a user icon as a loader using a given icon loading lambda.
  */
-public class UserIconLoader extends AsyncLoader<SparseArray<Drawable>> {
+public class UserIconLoader extends AsyncLoaderCompat<SparseArray<Drawable>> {
     private FetchUserIconTask mTask;
 
     /**
diff --git a/src/com/android/settings/deviceinfo/storage/VolumeSizesLoader.java b/src/com/android/settings/deviceinfo/storage/VolumeSizesLoader.java
index 844c195..2d3de81 100644
--- a/src/com/android/settings/deviceinfo/storage/VolumeSizesLoader.java
+++ b/src/com/android/settings/deviceinfo/storage/VolumeSizesLoader.java
@@ -22,13 +22,13 @@
 
 import com.android.settingslib.deviceinfo.PrivateStorageInfo;
 import com.android.settingslib.deviceinfo.StorageVolumeProvider;
-import com.android.settingslib.utils.AsyncLoader;
+import com.android.settingslib.utils.AsyncLoaderCompat;
 
 import java.io.IOException;
 
 import androidx.annotation.VisibleForTesting;
 
-public class VolumeSizesLoader extends AsyncLoader<PrivateStorageInfo> {
+public class VolumeSizesLoader extends AsyncLoaderCompat<PrivateStorageInfo> {
     private StorageVolumeProvider mVolumeProvider;
     private StorageStatsManager mStats;
     private VolumeInfo mVolume;
diff --git a/src/com/android/settings/display/DensityPreference.java b/src/com/android/settings/display/DensityPreference.java
index e55e578..61c5729 100644
--- a/src/com/android/settings/display/DensityPreference.java
+++ b/src/com/android/settings/display/DensityPreference.java
@@ -27,12 +27,12 @@
 
 import com.android.settings.R;
 import com.android.settings.Utils;
-import com.android.settingslib.CustomEditTextPreference;
+import com.android.settingslib.CustomEditTextPreferenceCompat;
 import com.android.settingslib.display.DisplayDensityUtils;
 
 import java.text.NumberFormat;
 
-public class DensityPreference extends CustomEditTextPreference {
+public class DensityPreference extends CustomEditTextPreferenceCompat {
     private static final String TAG = "DensityPreference";
 
     public DensityPreference(Context context, AttributeSet attrs) {
diff --git a/src/com/android/settings/display/TimeoutListPreference.java b/src/com/android/settings/display/TimeoutListPreference.java
index 7512a14..34b2e11 100644
--- a/src/com/android/settings/display/TimeoutListPreference.java
+++ b/src/com/android/settings/display/TimeoutListPreference.java
@@ -18,7 +18,6 @@
 
 import static com.android.settingslib.RestrictedLockUtils.EnforcedAdmin;
 
-import android.app.AlertDialog;
 import android.app.Dialog;
 import android.app.admin.DevicePolicyManager;
 import android.content.Context;
@@ -33,6 +32,9 @@
 
 import java.util.ArrayList;
 
+import androidx.appcompat.app.AlertDialog.Builder;
+
+
 public class TimeoutListPreference extends RestrictedListPreference {
     private static final String TAG = "TimeoutListPreference";
     private EnforcedAdmin mAdmin;
@@ -46,7 +48,7 @@
     }
 
     @Override
-    protected void onPrepareDialogBuilder(AlertDialog.Builder builder,
+    protected void onPrepareDialogBuilder(Builder builder,
             DialogInterface.OnClickListener listener) {
         super.onPrepareDialogBuilder(builder, listener);
         if (mAdmin != null) {
diff --git a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
index 1e48f58..c71468b 100644
--- a/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
+++ b/src/com/android/settings/fuelgauge/AdvancedPowerUsageDetail.java
@@ -246,7 +246,7 @@
         final Bundle bundle = getArguments();
         EntityHeaderController controller = EntityHeaderController
                 .newInstance(context, this, appSnippet)
-                .setRecyclerView(getListView(), getLifecycle())
+                .setRecyclerView(getListView(), getSettingsLifecycle())
                 .setButtonActions(EntityHeaderController.ActionType.ACTION_NONE,
                         EntityHeaderController.ActionType.ACTION_NONE);
 
@@ -327,7 +327,7 @@
         controllers.add(new BatteryOptimizationPreferenceController(
                 (SettingsActivity) getActivity(), this, packageName));
         mAppButtonsPreferenceController = new AppButtonsPreferenceController(
-                (SettingsActivity) getActivity(), this, getLifecycle(), packageName, mState,
+                (SettingsActivity) getActivity(), this, getSettingsLifecycle(), packageName, mState,
                 REQUEST_UNINSTALL, REQUEST_REMOVE_DEVICE_ADMIN);
         controllers.add(mAppButtonsPreferenceController);
 
diff --git a/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java b/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java
index 87fa13c..71eb554 100644
--- a/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java
+++ b/src/com/android/settings/fuelgauge/BatteryHeaderPreferenceController.java
@@ -36,6 +36,7 @@
 import com.android.settingslib.core.lifecycle.events.OnStart;
 
 import androidx.annotation.VisibleForTesting;
+import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceScreen;
 
 /**
@@ -56,14 +57,14 @@
     TextView mSummary2;
 
     private final Activity mActivity;
-    private final PreferenceFragment mHost;
+    private final PreferenceFragmentCompat mHost;
     private final Lifecycle mLifecycle;
     private final PowerManager mPowerManager;
 
     private LayoutPreference mBatteryLayoutPref;
 
     public BatteryHeaderPreferenceController(Context context, Activity activity,
-            PreferenceFragment host, Lifecycle lifecycle) {
+            PreferenceFragmentCompat host, Lifecycle lifecycle) {
         super(context);
         mActivity = activity;
         mHost = host;
diff --git a/src/com/android/settings/fuelgauge/BatteryInfoLoader.java b/src/com/android/settings/fuelgauge/BatteryInfoLoader.java
index 22efaf6..a03e797 100644
--- a/src/com/android/settings/fuelgauge/BatteryInfoLoader.java
+++ b/src/com/android/settings/fuelgauge/BatteryInfoLoader.java
@@ -19,14 +19,14 @@
 
 import com.android.internal.annotations.VisibleForTesting;
 import com.android.internal.os.BatteryStatsHelper;
-import com.android.settingslib.utils.AsyncLoader;
+import com.android.settingslib.utils.AsyncLoaderCompat;
 
 /**
  * Loader that can be used by classes to load BatteryInfo in a background thread. This loader will
  * automatically grab enhanced battery estimates if available or fall back to the system estimate
  * when not available.
  */
-public class BatteryInfoLoader extends AsyncLoader<BatteryInfo>{
+public class BatteryInfoLoader extends AsyncLoaderCompat<BatteryInfo>{
 
     BatteryStatsHelper mStatsHelper;
     private static final String LOG_TAG = "BatteryInfoLoader";
diff --git a/src/com/android/settings/fuelgauge/BatteryStatsHelperLoader.java b/src/com/android/settings/fuelgauge/BatteryStatsHelperLoader.java
index cb260af..7369ed8 100644
--- a/src/com/android/settings/fuelgauge/BatteryStatsHelperLoader.java
+++ b/src/com/android/settings/fuelgauge/BatteryStatsHelperLoader.java
@@ -20,14 +20,14 @@
 import android.os.UserManager;
 
 import com.android.internal.os.BatteryStatsHelper;
-import com.android.settingslib.utils.AsyncLoader;
+import com.android.settingslib.utils.AsyncLoaderCompat;
 
 import androidx.annotation.VisibleForTesting;
 
 /**
  * Loader to get new {@link BatteryStatsHelper} in the background
  */
-public class BatteryStatsHelperLoader extends AsyncLoader<BatteryStatsHelper> {
+public class BatteryStatsHelperLoader extends AsyncLoaderCompat<BatteryStatsHelper> {
     @VisibleForTesting
     UserManager mUserManager;
     @VisibleForTesting
diff --git a/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java b/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java
index f58ad96..d27e4dc 100644
--- a/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java
+++ b/src/com/android/settings/fuelgauge/DebugEstimatesLoader.java
@@ -23,13 +23,13 @@
 
 import com.android.internal.os.BatteryStatsHelper;
 import com.android.settings.overlay.FeatureFactory;
-import com.android.settingslib.utils.AsyncLoader;
+import com.android.settingslib.utils.AsyncLoaderCompat;
 import com.android.settingslib.utils.PowerUtil;
 
 import java.util.ArrayList;
 import java.util.List;
 
-public class DebugEstimatesLoader extends AsyncLoader<List<BatteryInfo>> {
+public class DebugEstimatesLoader extends AsyncLoaderCompat<List<BatteryInfo>> {
     private BatteryStatsHelper mStatsHelper;
 
     public DebugEstimatesLoader(Context context, BatteryStatsHelper statsHelper) {
diff --git a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java
index 8e3c8de..9e9e7af 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageAdvanced.java
@@ -135,7 +135,7 @@
         final List<AbstractPreferenceController> controllers = new ArrayList<>();
 
         mBatteryAppListPreferenceController = new BatteryAppListPreferenceController(context,
-                KEY_APP_LIST, getLifecycle(), (SettingsActivity) getActivity(), this);
+                KEY_APP_LIST, getSettingsLifecycle(), (SettingsActivity) getActivity(), this);
         controllers.add(mBatteryAppListPreferenceController);
 
         return controllers;
diff --git a/src/com/android/settings/fuelgauge/PowerUsageSummary.java b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
index 6190b7b..3d13d04 100644
--- a/src/com/android/settings/fuelgauge/PowerUsageSummary.java
+++ b/src/com/android/settings/fuelgauge/PowerUsageSummary.java
@@ -241,7 +241,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        final Lifecycle lifecycle = getLifecycle();
+        final Lifecycle lifecycle = getSettingsLifecycle();
         final SettingsActivity activity = (SettingsActivity) getActivity();
         final List<AbstractPreferenceController> controllers = new ArrayList<>();
         mBatteryHeaderPreferenceController = new BatteryHeaderPreferenceController(
diff --git a/src/com/android/settings/fuelgauge/RestrictedAppDetails.java b/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
index 5d92bfd..dd3d9dc 100644
--- a/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
+++ b/src/com/android/settings/fuelgauge/RestrictedAppDetails.java
@@ -38,7 +38,7 @@
 import com.android.settings.fuelgauge.batterytip.tips.UnrestrictAppTip;
 import com.android.settings.widget.AppCheckBoxPreference;
 import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.widget.FooterPreferenceMixin;
+import com.android.settingslib.widget.FooterPreferenceMixinCompat;
 
 import java.util.List;
 
@@ -68,8 +68,8 @@
     BatteryUtils mBatteryUtils;
     @VisibleForTesting
     PackageManager mPackageManager;
-    private final FooterPreferenceMixin mFooterPreferenceMixin =
-            new FooterPreferenceMixin(this, getLifecycle());
+    private final FooterPreferenceMixinCompat mFooterPreferenceMixin =
+            new FooterPreferenceMixinCompat(this, getSettingsLifecycle());
 
     public static void startRestrictedAppDetails(InstrumentedPreferenceFragment fragment,
             List<AppInfo> appInfos) {
diff --git a/src/com/android/settings/fuelgauge/anomaly/AnomalyLoader.java b/src/com/android/settings/fuelgauge/anomaly/AnomalyLoader.java
index 8917e35..c7d6ba4 100644
--- a/src/com/android/settings/fuelgauge/anomaly/AnomalyLoader.java
+++ b/src/com/android/settings/fuelgauge/anomaly/AnomalyLoader.java
@@ -24,7 +24,7 @@
 import android.util.Log;
 
 import com.android.internal.os.BatteryStatsHelper;
-import com.android.settingslib.utils.AsyncLoader;
+import com.android.settingslib.utils.AsyncLoaderCompat;
 
 import java.util.ArrayList;
 import java.util.List;
@@ -35,7 +35,7 @@
  * Loader to compute which apps are anomaly and return a anomaly list. It will return
  * an empty list if there is no anomaly.
  */
-public class AnomalyLoader extends AsyncLoader<List<Anomaly>> {
+public class AnomalyLoader extends AsyncLoaderCompat<List<Anomaly>> {
     private static final String TAG = "AnomalyLoader";
 
     private static final boolean USE_FAKE_DATA = false;
diff --git a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSettings.java b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSettings.java
index 5288970..8b0409c 100644
--- a/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSettings.java
+++ b/src/com/android/settings/fuelgauge/batterysaver/BatterySaverSettings.java
@@ -62,7 +62,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle());
+        return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
     @Override
diff --git a/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java b/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java
index b46c12e..916ee85 100644
--- a/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java
+++ b/src/com/android/settings/fuelgauge/batterytip/BatteryTipLoader.java
@@ -31,7 +31,7 @@
 import com.android.settings.fuelgauge.batterytip.tips.BatteryTip;
 import com.android.settings.fuelgauge.batterytip.tips.LowBatteryTip;
 import com.android.settings.fuelgauge.batterytip.tips.SummaryTip;
-import com.android.settingslib.utils.AsyncLoader;
+import com.android.settingslib.utils.AsyncLoaderCompat;
 
 import java.util.ArrayList;
 import java.util.Collections;
@@ -43,7 +43,7 @@
  * Loader to compute and return a battery tip list. It will always return a full length list even
  * though some tips may have state {@code BaseBatteryTip.StateType.INVISIBLE}.
  */
-public class BatteryTipLoader extends AsyncLoader<List<BatteryTip>> {
+public class BatteryTipLoader extends AsyncLoaderCompat<List<BatteryTip>> {
     private static final String TAG = "BatteryTipLoader";
 
     private static final boolean USE_FAKE_DATA = false;
diff --git a/src/com/android/settings/gestures/AssistGestureSettings.java b/src/com/android/settings/gestures/AssistGestureSettings.java
index ffe2234..bbd148c 100644
--- a/src/com/android/settings/gestures/AssistGestureSettings.java
+++ b/src/com/android/settings/gestures/AssistGestureSettings.java
@@ -54,7 +54,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle());
+        return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
diff --git a/src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java b/src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java
index 75bf724..0410176 100644
--- a/src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java
+++ b/src/com/android/settings/inputmethod/AvailableVirtualKeyboardFragment.java
@@ -38,7 +38,7 @@
 import com.android.settings.R;
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
-import com.android.settingslib.inputmethod.InputMethodAndSubtypeUtil;
+import com.android.settingslib.inputmethod.InputMethodAndSubtypeUtilCompat;
 import com.android.settingslib.inputmethod.InputMethodPreference;
 import com.android.settingslib.inputmethod.InputMethodSettingValuesWrapper;
 import com.android.settingslib.search.SearchIndexable;
@@ -79,7 +79,7 @@
     public void onSaveInputMethodPreference(final InputMethodPreference pref) {
         final boolean hasHardwareKeyboard = getResources().getConfiguration().keyboard
                 == Configuration.KEYBOARD_QWERTY;
-        InputMethodAndSubtypeUtil.saveInputMethodSubtypeList(this, getContentResolver(),
+        InputMethodAndSubtypeUtilCompat.saveInputMethodSubtypeList(this, getContentResolver(),
                 mImm.getInputMethodList(), hasHardwareKeyboard);
         // Update input method settings and preference list.
         mInputMethodSettingValues.refreshAllInputMethodAndSubtypes();
@@ -164,7 +164,7 @@
             final InputMethodPreference pref = mInputMethodPreferenceList.get(i);
             pref.setOrder(i);
             getPreferenceScreen().addPreference(pref);
-            InputMethodAndSubtypeUtil.removeUnnecessaryNonPersistentPreference(pref);
+            InputMethodAndSubtypeUtilCompat.removeUnnecessaryNonPersistentPreference(pref);
             pref.updatePreferenceViews();
         }
     }
diff --git a/src/com/android/settings/inputmethod/InputMethodAndSubtypePreferenceController.java b/src/com/android/settings/inputmethod/InputMethodAndSubtypePreferenceController.java
index 912b5cf..4c08e01 100644
--- a/src/com/android/settings/inputmethod/InputMethodAndSubtypePreferenceController.java
+++ b/src/com/android/settings/inputmethod/InputMethodAndSubtypePreferenceController.java
@@ -22,25 +22,26 @@
 import com.android.settingslib.core.lifecycle.LifecycleObserver;
 import com.android.settingslib.core.lifecycle.events.OnStart;
 import com.android.settingslib.core.lifecycle.events.OnStop;
-import com.android.settingslib.inputmethod.InputMethodAndSubtypeEnablerManager;
+import com.android.settingslib.inputmethod.InputMethodAndSubtypeEnablerManagerCompat;
 
+import androidx.preference.PreferenceFragmentCompat;
 import androidx.preference.PreferenceScreen;
 
 public class InputMethodAndSubtypePreferenceController extends BasePreferenceController implements
         LifecycleObserver, OnStart, OnStop {
 
-    private PreferenceFragment mFragment;
-    private InputMethodAndSubtypeEnablerManager mManager;
+    private PreferenceFragmentCompat mFragment;
+    private InputMethodAndSubtypeEnablerManagerCompat mManager;
     private String mTargetImi;
 
     public InputMethodAndSubtypePreferenceController(Context context, String key) {
         super(context, key);
     }
 
-    public void initialize(PreferenceFragment fragment, String imi) {
+    public void initialize(PreferenceFragmentCompat fragment, String imi) {
         mFragment = fragment;
         mTargetImi = imi;
-        mManager = new InputMethodAndSubtypeEnablerManager(mFragment);
+        mManager = new InputMethodAndSubtypeEnablerManagerCompat(mFragment);
     }
 
     @Override
diff --git a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java b/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
index 6a03c22..1a7fe22 100644
--- a/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
+++ b/src/com/android/settings/inputmethod/KeyboardLayoutDialogFragment.java
@@ -157,7 +157,7 @@
     @Override
     public void onActivityResult(int requestCode, int resultCode, Intent data) {
         super.onActivityResult(requestCode, resultCode, data);
-        show(getActivity().getFragmentManager(), "layout");
+        show(getActivity().getSupportFragmentManager(), "layout");
     }
 
     private void onKeyboardLayoutClicked(int which) {
diff --git a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
index 765a834..cc1978f 100644
--- a/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
+++ b/src/com/android/settings/inputmethod/PhysicalKeyboardFragment.java
@@ -182,7 +182,7 @@
         KeyboardLayoutDialogFragment fragment = new KeyboardLayoutDialogFragment(
                 inputDeviceIdentifier);
         fragment.setTargetFragment(this, 0);
-        fragment.show(getActivity().getFragmentManager(), "keyboardLayout");
+        fragment.show(getActivity().getSupportFragmentManager(), "keyboardLayout");
     }
 
     private void registerShowVirtualKeyboardSettingsObserver() {
diff --git a/src/com/android/settings/inputmethod/SpellCheckerPreference.java b/src/com/android/settings/inputmethod/SpellCheckerPreference.java
index 83d24d9..8cd73f7 100644
--- a/src/com/android/settings/inputmethod/SpellCheckerPreference.java
+++ b/src/com/android/settings/inputmethod/SpellCheckerPreference.java
@@ -16,7 +16,6 @@
 
 package com.android.settings.inputmethod;
 
-import android.app.AlertDialog.Builder;
 import android.content.ActivityNotFoundException;
 import android.content.Context;
 import android.content.DialogInterface;
@@ -29,6 +28,7 @@
 import com.android.settings.CustomListPreference;
 import com.android.settings.R;
 
+import androidx.appcompat.app.AlertDialog.Builder;
 import androidx.preference.PreferenceViewHolder;
 
 /**
diff --git a/src/com/android/settings/inputmethod/SpellCheckerPreferenceController.java b/src/com/android/settings/inputmethod/SpellCheckerPreferenceController.java
index 10d8414..cdc1c3a 100644
--- a/src/com/android/settings/inputmethod/SpellCheckerPreferenceController.java
+++ b/src/com/android/settings/inputmethod/SpellCheckerPreferenceController.java
@@ -23,7 +23,7 @@
 import com.android.settings.R;
 import com.android.settings.core.PreferenceControllerMixin;
 import com.android.settingslib.core.AbstractPreferenceController;
-import com.android.settingslib.inputmethod.InputMethodAndSubtypeUtil;
+import com.android.settingslib.inputmethod.InputMethodAndSubtypeUtilCompat;
 
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
@@ -46,7 +46,7 @@
         super.displayPreference(screen);
         final Preference preference = screen.findPreference(KEY_SPELL_CHECKERS);
         if (preference != null) {
-            InputMethodAndSubtypeUtil.removeUnnecessaryNonPersistentPreference(preference);
+            InputMethodAndSubtypeUtilCompat.removeUnnecessaryNonPersistentPreference(preference);
         }
     }
 
diff --git a/src/com/android/settings/inputmethod/UserDictionaryCursorLoader.java b/src/com/android/settings/inputmethod/UserDictionaryCursorLoader.java
index 73602dc..5f13402 100644
--- a/src/com/android/settings/inputmethod/UserDictionaryCursorLoader.java
+++ b/src/com/android/settings/inputmethod/UserDictionaryCursorLoader.java
@@ -17,7 +17,6 @@
 package com.android.settings.inputmethod;
 
 import android.content.Context;
-import android.content.CursorLoader;
 import android.database.Cursor;
 import android.database.MatrixCursor;
 import android.provider.UserDictionary;
@@ -28,6 +27,7 @@
 import java.util.Set;
 
 import androidx.annotation.VisibleForTesting;
+import androidx.loader.content.CursorLoader;
 
 public class UserDictionaryCursorLoader extends CursorLoader {
 
diff --git a/src/com/android/settings/inputmethod/VirtualKeyboardFragment.java b/src/com/android/settings/inputmethod/VirtualKeyboardFragment.java
index 939309d..024fe60 100644
--- a/src/com/android/settings/inputmethod/VirtualKeyboardFragment.java
+++ b/src/com/android/settings/inputmethod/VirtualKeyboardFragment.java
@@ -33,7 +33,7 @@
 import com.android.settings.SettingsPreferenceFragment;
 import com.android.settings.search.BaseSearchIndexProvider;
 import com.android.settings.search.Indexable;
-import com.android.settingslib.inputmethod.InputMethodAndSubtypeUtil;
+import com.android.settingslib.inputmethod.InputMethodAndSubtypeUtilCompat;
 import com.android.settingslib.inputmethod.InputMethodPreference;
 import com.android.settingslib.search.SearchIndexable;
 
@@ -113,7 +113,7 @@
             final InputMethodPreference pref = mInputMethodPreferenceList.get(i);
             pref.setOrder(i);
             getPreferenceScreen().addPreference(pref);
-            InputMethodAndSubtypeUtil.removeUnnecessaryNonPersistentPreference(pref);
+            InputMethodAndSubtypeUtilCompat.removeUnnecessaryNonPersistentPreference(pref);
             pref.updatePreferenceViews();
         }
         mAddVirtualKeyboardScreen.setIcon(R.drawable.ic_add_24dp);
diff --git a/src/com/android/settings/language/LanguageAndInputSettings.java b/src/com/android/settings/language/LanguageAndInputSettings.java
index 507e6cb..c983c07 100644
--- a/src/com/android/settings/language/LanguageAndInputSettings.java
+++ b/src/com/android/settings/language/LanguageAndInputSettings.java
@@ -89,7 +89,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle());
+        return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
     private static List<AbstractPreferenceController> buildPreferenceControllers(
diff --git a/src/com/android/settings/localepicker/LocaleListEditor.java b/src/com/android/settings/localepicker/LocaleListEditor.java
index 6b3ed39..87c19dd 100644
--- a/src/com/android/settings/localepicker/LocaleListEditor.java
+++ b/src/com/android/settings/localepicker/LocaleListEditor.java
@@ -31,7 +31,6 @@
 import android.widget.TextView;
 
 import com.android.internal.app.LocalePicker;
-import com.android.internal.app.LocalePickerWithRegion;
 import com.android.internal.app.LocaleStore;
 import com.android.internal.logging.nano.MetricsProto.MetricsEvent;
 import com.android.settings.R;
diff --git a/src/com/android/settings/localepicker/LocalePickerWithRegion.java b/src/com/android/settings/localepicker/LocalePickerWithRegion.java
new file mode 100644
index 0000000..e8a91bc
--- /dev/null
+++ b/src/com/android/settings/localepicker/LocalePickerWithRegion.java
@@ -0,0 +1,278 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.localepicker;
+
+import android.content.Context;
+import android.os.Bundle;
+import android.os.LocaleList;
+import android.text.TextUtils;
+import android.view.Menu;
+import android.view.MenuInflater;
+import android.view.MenuItem;
+import android.view.View;
+import android.widget.ListView;
+import android.widget.SearchView;
+
+import com.android.internal.R;
+import com.android.internal.app.LocaleHelper;
+import com.android.internal.app.LocalePicker;
+import com.android.internal.app.LocaleStore;
+import com.android.internal.app.SuggestedLocaleAdapter;
+
+import java.util.Collections;
+import java.util.HashSet;
+import java.util.Locale;
+import java.util.Set;
+
+import androidx.fragment.app.FragmentManager;
+import androidx.fragment.app.FragmentTransaction;
+import androidx.fragment.app.ListFragment;
+
+/**
+ * A two-step locale picker. It shows a language, then a country.
+ *
+ * <p>It shows suggestions at the top, then the rest of the locales.
+ * Allows the user to search for locales using both their native name and their name in the
+ * default locale.</p>
+ */
+public class LocalePickerWithRegion extends ListFragment implements SearchView.OnQueryTextListener {
+    private static final String PARENT_FRAGMENT_NAME = "localeListEditor";
+
+    private SuggestedLocaleAdapter mAdapter;
+    private LocaleSelectedListener mListener;
+    private Set<LocaleStore.LocaleInfo> mLocaleList;
+    private LocaleStore.LocaleInfo mParentLocale;
+    private boolean mTranslatedOnly = false;
+    private SearchView mSearchView = null;
+    private CharSequence mPreviousSearch = null;
+    private boolean mPreviousSearchHadFocus = false;
+    private int mFirstVisiblePosition = 0;
+    private int mTopDistance = 0;
+
+    /**
+     * Other classes can register to be notified when a locale was selected.
+     *
+     * <p>This is the mechanism to "return" the result of the selection.</p>
+     */
+    public interface LocaleSelectedListener {
+        /**
+         * The classes that want to retrieve the locale picked should implement this method.
+         * @param locale    the locale picked.
+         */
+        void onLocaleSelected(LocaleStore.LocaleInfo locale);
+    }
+
+    private static LocalePickerWithRegion createCountryPicker(Context context,
+            LocaleSelectedListener listener, LocaleStore.LocaleInfo parent,
+            boolean translatedOnly) {
+        LocalePickerWithRegion
+                localePicker = new LocalePickerWithRegion();
+        boolean shouldShowTheList = localePicker.setListener(context, listener, parent,
+                translatedOnly);
+        return shouldShowTheList ? localePicker : null;
+    }
+
+    public static LocalePickerWithRegion createLanguagePicker(Context context,
+            LocaleSelectedListener listener, boolean translatedOnly) {
+        LocalePickerWithRegion
+                localePicker = new LocalePickerWithRegion();
+        localePicker.setListener(context, listener, /* parent */ null, translatedOnly);
+        return localePicker;
+    }
+
+    /**
+     * Sets the listener and initializes the locale list.
+     *
+     * <p>Returns true if we need to show the list, false if not.</p>
+     *
+     * <p>Can return false because of an error, trying to show a list of countries,
+     * but no parent locale was provided.</p>
+     *
+     * <p>It can also return false if the caller tries to show the list in country mode and
+     * there is only one country available (i.e. Japanese => Japan).
+     * In this case we don't even show the list, we call the listener with that locale,
+     * "pretending" it was selected, and return false.</p>
+     */
+    private boolean setListener(Context context, LocaleSelectedListener listener,
+            LocaleStore.LocaleInfo parent, boolean translatedOnly) {
+        this.mParentLocale = parent;
+        this.mListener = listener;
+        this.mTranslatedOnly = translatedOnly;
+        setRetainInstance(true);
+
+        final HashSet<String> langTagsToIgnore = new HashSet<>();
+        if (!translatedOnly) {
+            final LocaleList userLocales = LocalePicker.getLocales();
+            final String[] langTags = userLocales.toLanguageTags().split(",");
+            Collections.addAll(langTagsToIgnore, langTags);
+        }
+
+        if (parent != null) {
+            mLocaleList = LocaleStore.getLevelLocales(context,
+                    langTagsToIgnore, parent, translatedOnly);
+            if (mLocaleList.size() <= 1) {
+                if (listener != null && (mLocaleList.size() == 1)) {
+                    listener.onLocaleSelected(mLocaleList.iterator().next());
+                }
+                return false;
+            }
+        } else {
+            mLocaleList = LocaleStore.getLevelLocales(context, langTagsToIgnore,
+                    null /* no parent */, translatedOnly);
+        }
+
+        return true;
+    }
+
+    private void returnToParentFrame() {
+        getFragmentManager().popBackStack(PARENT_FRAGMENT_NAME,
+                FragmentManager.POP_BACK_STACK_INCLUSIVE);
+    }
+
+    @Override
+    public void onCreate(Bundle savedInstanceState) {
+        super.onCreate(savedInstanceState);
+        setHasOptionsMenu(true);
+
+        if (mLocaleList == null) {
+            // The fragment was killed and restored by the FragmentManager.
+            // At this point we have no data, no listener. Just return, to prevend a NPE.
+            // Fixes b/28748150. Created b/29400003 for a cleaner solution.
+            returnToParentFrame();
+            return;
+        }
+
+        final boolean countryMode = mParentLocale != null;
+        final Locale sortingLocale = countryMode ? mParentLocale.getLocale() : Locale.getDefault();
+        mAdapter = new SuggestedLocaleAdapter(mLocaleList, countryMode);
+        final LocaleHelper.LocaleInfoComparator comp =
+                new LocaleHelper.LocaleInfoComparator(sortingLocale, countryMode);
+        mAdapter.sort(comp);
+        setListAdapter(mAdapter);
+    }
+
+    @Override
+    public boolean onOptionsItemSelected(MenuItem menuItem) {
+        int id = menuItem.getItemId();
+        switch (id) {
+            case android.R.id.home:
+                getFragmentManager().popBackStack();
+                return true;
+        }
+        return super.onOptionsItemSelected(menuItem);
+    }
+
+    @Override
+    public void onResume() {
+        super.onResume();
+
+        if (mParentLocale != null) {
+            getActivity().setTitle(mParentLocale.getFullNameNative());
+        } else {
+            getActivity().setTitle(R.string.language_selection_title);
+        }
+
+        getListView().requestFocus();
+    }
+
+    @Override
+    public void onPause() {
+        super.onPause();
+
+        // Save search status
+        if (mSearchView != null) {
+            mPreviousSearchHadFocus = mSearchView.hasFocus();
+            mPreviousSearch = mSearchView.getQuery();
+        } else {
+            mPreviousSearchHadFocus = false;
+            mPreviousSearch = null;
+        }
+
+        // Save scroll position
+        final ListView list = getListView();
+        final View firstChild = list.getChildAt(0);
+        mFirstVisiblePosition = list.getFirstVisiblePosition();
+        mTopDistance = (firstChild == null) ? 0 : (firstChild.getTop() - list.getPaddingTop());
+    }
+
+    @Override
+    public void onListItemClick(ListView l, View v, int position, long id) {
+        final LocaleStore.LocaleInfo locale =
+                (LocaleStore.LocaleInfo) getListAdapter().getItem(position);
+
+        if (locale.getParent() != null) {
+            if (mListener != null) {
+                mListener.onLocaleSelected(locale);
+            }
+            returnToParentFrame();
+        } else {
+            LocalePickerWithRegion
+                    selector = LocalePickerWithRegion.createCountryPicker(
+                    getContext(), mListener, locale, mTranslatedOnly /* translate only */);
+            if (selector != null) {
+                getFragmentManager().beginTransaction()
+                        .setTransition(FragmentTransaction.TRANSIT_FRAGMENT_OPEN)
+                        .replace(getId(), selector).addToBackStack(null)
+                        .commit();
+            } else {
+                returnToParentFrame();
+            }
+        }
+    }
+
+    @Override
+    public void onCreateOptionsMenu(Menu menu, MenuInflater inflater) {
+        if (mParentLocale == null) {
+            inflater.inflate(R.menu.language_selection_list, menu);
+
+            final MenuItem searchMenuItem = menu.findItem(R.id.locale_search_menu);
+            mSearchView = (SearchView) searchMenuItem.getActionView();
+
+            mSearchView.setQueryHint(getText(R.string.search_language_hint));
+            mSearchView.setOnQueryTextListener(this);
+
+            // Restore previous search status
+            if (!TextUtils.isEmpty(mPreviousSearch)) {
+                searchMenuItem.expandActionView();
+                mSearchView.setIconified(false);
+                mSearchView.setActivated(true);
+                if (mPreviousSearchHadFocus) {
+                    mSearchView.requestFocus();
+                }
+                mSearchView.setQuery(mPreviousSearch, true /* submit */);
+            } else {
+                mSearchView.setQuery(null, false /* submit */);
+            }
+
+            // Restore previous scroll position
+            getListView().setSelectionFromTop(mFirstVisiblePosition, mTopDistance);
+        }
+    }
+
+    @Override
+    public boolean onQueryTextSubmit(String query) {
+        return false;
+    }
+
+    @Override
+    public boolean onQueryTextChange(String newText) {
+        if (mAdapter != null) {
+            mAdapter.getFilter().filter(newText);
+        }
+        return false;
+    }
+}
diff --git a/src/com/android/settings/location/LocationSettings.java b/src/com/android/settings/location/LocationSettings.java
index 638518c..18b1033 100644
--- a/src/com/android/settings/location/LocationSettings.java
+++ b/src/com/android/settings/location/LocationSettings.java
@@ -81,7 +81,8 @@
         final SwitchBar switchBar = activity.getSwitchBar();
         switchBar.setSwitchBarText(R.string.location_settings_master_switch_title,
                 R.string.location_settings_master_switch_title);
-        mSwitchBarController = new LocationSwitchBarController(activity, switchBar, getLifecycle());
+        mSwitchBarController = new LocationSwitchBarController(activity, switchBar,
+                getSettingsLifecycle());
         switchBar.show();
     }
 
@@ -97,7 +98,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, this, getLifecycle());
+        return buildPreferenceControllers(context, this, getSettingsLifecycle());
     }
 
     static void addPreferencesSorted(List<Preference> prefs, PreferenceGroup container) {
diff --git a/src/com/android/settings/location/RecentLocationRequestSeeAllFragment.java b/src/com/android/settings/location/RecentLocationRequestSeeAllFragment.java
index 8a15734..d256b9b 100644
--- a/src/com/android/settings/location/RecentLocationRequestSeeAllFragment.java
+++ b/src/com/android/settings/location/RecentLocationRequestSeeAllFragment.java
@@ -59,7 +59,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle(), this);
+        return buildPreferenceControllers(context, getSettingsLifecycle(), this);
     }
 
     private static List<AbstractPreferenceController> buildPreferenceControllers(
diff --git a/src/com/android/settings/network/NetworkDashboardFragment.java b/src/com/android/settings/network/NetworkDashboardFragment.java
index f270627..31a8435 100644
--- a/src/com/android/settings/network/NetworkDashboardFragment.java
+++ b/src/com/android/settings/network/NetworkDashboardFragment.java
@@ -81,9 +81,8 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle(), mMetricsFeatureProvider, this
-                /* fragment */,
-                this /* mobilePlanHost */);
+        return buildPreferenceControllers(context, getSettingsLifecycle(), mMetricsFeatureProvider,
+                this /* fragment */, this /* mobilePlanHost */);
     }
 
     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
diff --git a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
index 7bdc14e..3a04ade 100644
--- a/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
+++ b/src/com/android/settings/network/PrivateDnsModeDialogPreference.java
@@ -45,7 +45,7 @@
 import com.android.settings.R;
 import com.android.settings.overlay.FeatureFactory;
 import com.android.settings.utils.AnnotationSpan;
-import com.android.settingslib.CustomDialogPreference;
+import com.android.settingslib.CustomDialogPreferenceCompat;
 import com.android.settingslib.HelpUtils;
 
 import java.util.HashMap;
@@ -56,7 +56,7 @@
 /**
  * Dialog to set the Private DNS
  */
-public class PrivateDnsModeDialogPreference extends CustomDialogPreference implements
+public class PrivateDnsModeDialogPreference extends CustomDialogPreferenceCompat implements
         DialogInterface.OnClickListener, RadioGroup.OnCheckedChangeListener, TextWatcher {
 
     public static final String ANNOTATION_URL = "url";
diff --git a/src/com/android/settings/nfc/NfcPaymentPreference.java b/src/com/android/settings/nfc/NfcPaymentPreference.java
index 456115a..f5275ec 100644
--- a/src/com/android/settings/nfc/NfcPaymentPreference.java
+++ b/src/com/android/settings/nfc/NfcPaymentPreference.java
@@ -15,23 +15,23 @@
  */
 package com.android.settings.nfc;
 
-import android.app.AlertDialog;
 import android.content.Context;
 import android.content.DialogInterface;
 import android.util.AttributeSet;
 
-import com.android.settingslib.CustomDialogPreference;
+import com.android.settingslib.CustomDialogPreferenceCompat;
 
+import androidx.appcompat.app.AlertDialog.Builder;
 import androidx.preference.PreferenceViewHolder;
 
-public class NfcPaymentPreference extends CustomDialogPreference {
+public class NfcPaymentPreference extends CustomDialogPreferenceCompat {
 
     private Listener mListener;
 
     interface Listener {
         void onBindViewHolder(PreferenceViewHolder view);
 
-        void onPrepareDialogBuilder(AlertDialog.Builder builder,
+        void onPrepareDialogBuilder(Builder builder,
                 DialogInterface.OnClickListener listener);
     }
 
@@ -62,7 +62,7 @@
     }
 
     @Override
-    protected void onPrepareDialogBuilder(AlertDialog.Builder builder,
+    protected void onPrepareDialogBuilder(Builder builder,
             DialogInterface.OnClickListener listener) {
         super.onPrepareDialogBuilder(builder, listener);
 
diff --git a/src/com/android/settings/nfc/NfcPaymentPreferenceController.java b/src/com/android/settings/nfc/NfcPaymentPreferenceController.java
index 39f0195..8996cb1 100644
--- a/src/com/android/settings/nfc/NfcPaymentPreferenceController.java
+++ b/src/com/android/settings/nfc/NfcPaymentPreferenceController.java
@@ -13,7 +13,6 @@
  */
 package com.android.settings.nfc;
 
-import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.ActivityNotFoundException;
 import android.content.Context;
@@ -39,6 +38,7 @@
 
 import java.util.List;
 
+import androidx.appcompat.app.AlertDialog.Builder;
 import androidx.preference.Preference;
 import androidx.preference.PreferenceScreen;
 import androidx.preference.PreferenceViewHolder;
@@ -134,7 +134,7 @@
     }
 
     @Override
-    public void onPrepareDialogBuilder(AlertDialog.Builder builder,
+    public void onPrepareDialogBuilder(Builder builder,
             DialogInterface.OnClickListener listener) {
         builder.setSingleChoiceItems(mAdapter, 0, listener);
     }
diff --git a/src/com/android/settings/notification/ConfigureNotificationSettings.java b/src/com/android/settings/notification/ConfigureNotificationSettings.java
index adcd393..2b5a8ab 100644
--- a/src/com/android/settings/notification/ConfigureNotificationSettings.java
+++ b/src/com/android/settings/notification/ConfigureNotificationSettings.java
@@ -87,7 +87,7 @@
         } else {
             app = null;
         }
-        return buildPreferenceControllers(context, getLifecycle(), app, this);
+        return buildPreferenceControllers(context, getSettingsLifecycle(), app, this);
     }
 
     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
@@ -119,7 +119,7 @@
         if (preference instanceof RingtonePreference) {
             mRequestPreference = (RingtonePreference) preference;
             mRequestPreference.onPrepareRingtonePickerIntent(mRequestPreference.getIntent());
-            startActivityForResultAsUser(
+            getActivity().startActivityForResultAsUser(
                     mRequestPreference.getIntent(),
                     REQUEST_CODE,
                     null,
diff --git a/src/com/android/settings/notification/HeaderPreferenceController.java b/src/com/android/settings/notification/HeaderPreferenceController.java
index 89a312f..6ddafc3 100644
--- a/src/com/android/settings/notification/HeaderPreferenceController.java
+++ b/src/com/android/settings/notification/HeaderPreferenceController.java
@@ -34,15 +34,16 @@
 import androidx.lifecycle.LifecycleObserver;
 import androidx.lifecycle.OnLifecycleEvent;
 import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
 
 public class HeaderPreferenceController extends NotificationPreferenceController
         implements PreferenceControllerMixin, LifecycleObserver {
 
-    private final PreferenceFragment mFragment;
+    private final PreferenceFragmentCompat mFragment;
     private EntityHeaderController mHeaderController;
     private boolean mStarted = false;
 
-    public HeaderPreferenceController(Context context, PreferenceFragment fragment) {
+    public HeaderPreferenceController(Context context, PreferenceFragmentCompat fragment) {
         super(context, null);
         mFragment = fragment;
     }
diff --git a/src/com/android/settings/notification/NotificationLockscreenPreference.java b/src/com/android/settings/notification/NotificationLockscreenPreference.java
index b3f39f9..af912af 100644
--- a/src/com/android/settings/notification/NotificationLockscreenPreference.java
+++ b/src/com/android/settings/notification/NotificationLockscreenPreference.java
@@ -36,6 +36,8 @@
 import com.android.settings.Utils;
 import com.android.settingslib.RestrictedLockUtils;
 
+import androidx.appcompat.app.AlertDialog.Builder;
+
 public class NotificationLockscreenPreference extends RestrictedListPreference {
 
     private boolean mAllowRemoteInput;
@@ -72,7 +74,7 @@
     }
 
     @Override
-    protected void onPrepareDialogBuilder(AlertDialog.Builder builder,
+    protected void onPrepareDialogBuilder(Builder builder,
             DialogInterface.OnClickListener innerListener) {
 
         mListener = new Listener(innerListener);
diff --git a/src/com/android/settings/notification/NotificationSettingsBase.java b/src/com/android/settings/notification/NotificationSettingsBase.java
index ccef262..44f77cf 100644
--- a/src/com/android/settings/notification/NotificationSettingsBase.java
+++ b/src/com/android/settings/notification/NotificationSettingsBase.java
@@ -120,7 +120,7 @@
         loadChannelGroup();
         collectConfigActivities();
 
-        getLifecycle().addObserver(use(HeaderPreferenceController.class));
+        getSettingsLifecycle().addObserver(use(HeaderPreferenceController.class));
 
         for (NotificationPreferenceController controller : mControllers) {
             controller.onResume(mAppRow, mChannel, mChannelGroup, mSuspendedAppsAdmin);
diff --git a/src/com/android/settings/notification/SoundSettings.java b/src/com/android/settings/notification/SoundSettings.java
index dbac1c2..dafc538 100644
--- a/src/com/android/settings/notification/SoundSettings.java
+++ b/src/com/android/settings/notification/SoundSettings.java
@@ -117,7 +117,7 @@
         if (preference instanceof RingtonePreference) {
             mRequestPreference = (RingtonePreference) preference;
             mRequestPreference.onPrepareRingtonePickerIntent(mRequestPreference.getIntent());
-            startActivityForResultAsUser(
+            getActivity().startActivityForResultAsUser(
                     mRequestPreference.getIntent(),
                     REQUEST_CODE,
                     null,
@@ -156,7 +156,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, this, getLifecycle());
+        return buildPreferenceControllers(context, this, getSettingsLifecycle());
     }
 
     @Override
@@ -195,7 +195,7 @@
 
         for (VolumeSeekBarPreferenceController controller : volumeControllers) {
             controller.setCallback(mVolumeCallback);
-            getLifecycle().addObserver(controller);
+            getSettingsLifecycle().addObserver(controller);
         }
     }
 
diff --git a/src/com/android/settings/notification/ZenAutomaticRuleHeaderPreferenceController.java b/src/com/android/settings/notification/ZenAutomaticRuleHeaderPreferenceController.java
index 4b1c8c5..6468f1d 100644
--- a/src/com/android/settings/notification/ZenAutomaticRuleHeaderPreferenceController.java
+++ b/src/com/android/settings/notification/ZenAutomaticRuleHeaderPreferenceController.java
@@ -36,18 +36,19 @@
 
 import androidx.fragment.app.Fragment;
 import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
 
 public class ZenAutomaticRuleHeaderPreferenceController extends AbstractZenModePreferenceController
         implements PreferenceControllerMixin {
 
     private final String KEY = PREF_KEY_APP_HEADER;
-    private final PreferenceFragment mFragment;
+    private final PreferenceFragmentCompat mFragment;
     private AutomaticZenRule mRule;
     private String mId;
     private EntityHeaderController mController;
 
-    public ZenAutomaticRuleHeaderPreferenceController(Context context, PreferenceFragment fragment,
-            Lifecycle lifecycle) {
+    public ZenAutomaticRuleHeaderPreferenceController(Context context,
+            PreferenceFragmentCompat fragment, Lifecycle lifecycle) {
         super(context, PREF_KEY_APP_HEADER, lifecycle);
         mFragment = fragment;
     }
diff --git a/src/com/android/settings/notification/ZenModeAutomationSettings.java b/src/com/android/settings/notification/ZenModeAutomationSettings.java
index 196b4e7..ee85c4e 100644
--- a/src/com/android/settings/notification/ZenModeAutomationSettings.java
+++ b/src/com/android/settings/notification/ZenModeAutomationSettings.java
@@ -43,7 +43,7 @@
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
         ZenServiceListing serviceListing = new ZenServiceListing(getContext(), CONFIG);
         serviceListing.reloadApprovedServices();
-        return buildPreferenceControllers(context, this, serviceListing, getLifecycle());
+        return buildPreferenceControllers(context, this, serviceListing, getSettingsLifecycle());
     }
 
     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
diff --git a/src/com/android/settings/notification/ZenModeBlockedEffectsSettings.java b/src/com/android/settings/notification/ZenModeBlockedEffectsSettings.java
index 2bda243..c105a1a 100644
--- a/src/com/android/settings/notification/ZenModeBlockedEffectsSettings.java
+++ b/src/com/android/settings/notification/ZenModeBlockedEffectsSettings.java
@@ -51,7 +51,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle());
+        return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
diff --git a/src/com/android/settings/notification/ZenModeCallsSettings.java b/src/com/android/settings/notification/ZenModeCallsSettings.java
index d771ef2..bff1c9f 100644
--- a/src/com/android/settings/notification/ZenModeCallsSettings.java
+++ b/src/com/android/settings/notification/ZenModeCallsSettings.java
@@ -37,7 +37,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle());
+        return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
diff --git a/src/com/android/settings/notification/ZenModeEventRuleSettings.java b/src/com/android/settings/notification/ZenModeEventRuleSettings.java
index 9d1d49b..a6aba11 100644
--- a/src/com/android/settings/notification/ZenModeEventRuleSettings.java
+++ b/src/com/android/settings/notification/ZenModeEventRuleSettings.java
@@ -82,8 +82,9 @@
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
         List<AbstractPreferenceController> controllers = new ArrayList<>();
         mHeader = new ZenAutomaticRuleHeaderPreferenceController(context, this,
-                getLifecycle());
-        mSwitch = new ZenAutomaticRuleSwitchPreferenceController(context, this, getLifecycle());
+                getSettingsLifecycle());
+        mSwitch = new ZenAutomaticRuleSwitchPreferenceController(context, this,
+                getSettingsLifecycle());
         controllers.add(mHeader);
         controllers.add(mSwitch);
         return controllers;
diff --git a/src/com/android/settings/notification/ZenModeMsgEventReminderSettings.java b/src/com/android/settings/notification/ZenModeMsgEventReminderSettings.java
index e3a721f..b61b76e 100644
--- a/src/com/android/settings/notification/ZenModeMsgEventReminderSettings.java
+++ b/src/com/android/settings/notification/ZenModeMsgEventReminderSettings.java
@@ -37,7 +37,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle());
+        return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
diff --git a/src/com/android/settings/notification/ZenModeRestrictNotificationsSettings.java b/src/com/android/settings/notification/ZenModeRestrictNotificationsSettings.java
index 737c646..bf170df 100644
--- a/src/com/android/settings/notification/ZenModeRestrictNotificationsSettings.java
+++ b/src/com/android/settings/notification/ZenModeRestrictNotificationsSettings.java
@@ -42,7 +42,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle());
+        return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
     @Override
diff --git a/src/com/android/settings/notification/ZenModeScheduleRuleSettings.java b/src/com/android/settings/notification/ZenModeScheduleRuleSettings.java
index 5043e27..56f9081 100644
--- a/src/com/android/settings/notification/ZenModeScheduleRuleSettings.java
+++ b/src/com/android/settings/notification/ZenModeScheduleRuleSettings.java
@@ -200,8 +200,9 @@
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
         List<AbstractPreferenceController> controllers = new ArrayList<>();
         mHeader = new ZenAutomaticRuleHeaderPreferenceController(context, this,
-                getLifecycle());
-        mSwitch = new ZenAutomaticRuleSwitchPreferenceController(context, this, getLifecycle());
+                getSettingsLifecycle());
+        mSwitch = new ZenAutomaticRuleSwitchPreferenceController(context, this,
+                getSettingsLifecycle());
 
         controllers.add(mHeader);
         controllers.add(mSwitch);
diff --git a/src/com/android/settings/notification/ZenModeSettings.java b/src/com/android/settings/notification/ZenModeSettings.java
index b209ac8..ce8fe4d 100644
--- a/src/com/android/settings/notification/ZenModeSettings.java
+++ b/src/com/android/settings/notification/ZenModeSettings.java
@@ -71,7 +71,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle(), getFragmentManager());
+        return buildPreferenceControllers(context, getSettingsLifecycle(), getFragmentManager());
     }
 
     @Override
diff --git a/src/com/android/settings/notification/ZenModeSoundVibrationSettings.java b/src/com/android/settings/notification/ZenModeSoundVibrationSettings.java
index b72460c..32ff2d1 100644
--- a/src/com/android/settings/notification/ZenModeSoundVibrationSettings.java
+++ b/src/com/android/settings/notification/ZenModeSoundVibrationSettings.java
@@ -35,7 +35,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle());
+        return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
diff --git a/src/com/android/settings/password/ChooseLockTypeDialogFragment.java b/src/com/android/settings/password/ChooseLockTypeDialogFragment.java
index 99921b2..8969eec 100644
--- a/src/com/android/settings/password/ChooseLockTypeDialogFragment.java
+++ b/src/com/android/settings/password/ChooseLockTypeDialogFragment.java
@@ -17,8 +17,6 @@
 package com.android.settings.password;
 
 import android.app.Activity;
-import android.app.AlertDialog;
-import android.app.AlertDialog.Builder;
 import android.app.Dialog;
 import android.app.admin.DevicePolicyManager;
 import android.content.Context;
@@ -42,6 +40,7 @@
 
 import java.util.List;
 
+import androidx.appcompat.app.AlertDialog.Builder;
 import androidx.fragment.app.Fragment;
 
 /**
@@ -133,7 +132,7 @@
         mAdapter = new ScreenLockAdapter(context, locks, mController);
         builder.setAdapter(mAdapter, this);
         builder.setTitle(R.string.setup_lock_settings_options_dialog_title);
-        AlertDialog alertDialog = builder.create();
+        Dialog alertDialog = builder.create();
         return alertDialog;
     }
 
diff --git a/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java
index 4dd4a97..3818ac9 100644
--- a/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java
+++ b/src/com/android/settings/password/ConfirmDeviceCredentialBaseActivity.java
@@ -124,7 +124,7 @@
     }
 
     private ConfirmDeviceCredentialBaseFragment getFragment() {
-        Fragment fragment = getFragmentManager().findFragmentById(R.id.main_content);
+        Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.main_content);
         if (fragment != null && fragment instanceof ConfirmDeviceCredentialBaseFragment) {
             return (ConfirmDeviceCredentialBaseFragment) fragment;
         }
diff --git a/src/com/android/settings/password/ConfirmLockPassword.java b/src/com/android/settings/password/ConfirmLockPassword.java
index fd22b1e..b381226 100644
--- a/src/com/android/settings/password/ConfirmLockPassword.java
+++ b/src/com/android/settings/password/ConfirmLockPassword.java
@@ -85,7 +85,7 @@
     @Override
     public void onWindowFocusChanged(boolean hasFocus) {
         super.onWindowFocusChanged(hasFocus);
-        Fragment fragment = getFragmentManager().findFragmentById(R.id.main_content);
+        Fragment fragment = getSupportFragmentManager().findFragmentById(R.id.main_content);
         if (fragment != null && fragment instanceof ConfirmLockPasswordFragment) {
             ((ConfirmLockPasswordFragment)fragment).onWindowFocusChanged(hasFocus);
         }
diff --git a/src/com/android/settings/password/SetupChooseLockGeneric.java b/src/com/android/settings/password/SetupChooseLockGeneric.java
index 9384236..6ca0916 100644
--- a/src/com/android/settings/password/SetupChooseLockGeneric.java
+++ b/src/com/android/settings/password/SetupChooseLockGeneric.java
@@ -36,6 +36,7 @@
 import com.android.setupwizardlib.GlifPreferenceLayout;
 
 import androidx.preference.Preference;
+import androidx.preference.PreferenceFragmentCompat;
 import androidx.recyclerview.widget.RecyclerView;
 
 /**
@@ -55,7 +56,7 @@
     }
 
     @Override
-    /* package */ Class<? extends PreferenceFragment> getFragmentClass() {
+    /* package */ Class<? extends PreferenceFragmentCompat> getFragmentClass() {
         return SetupChooseLockGenericFragment.class;
     }
 
diff --git a/src/com/android/settings/print/PrintServiceSettingsFragment.java b/src/com/android/settings/print/PrintServiceSettingsFragment.java
index e05bea6..4629360 100644
--- a/src/com/android/settings/print/PrintServiceSettingsFragment.java
+++ b/src/com/android/settings/print/PrintServiceSettingsFragment.java
@@ -28,7 +28,6 @@
 import android.graphics.drawable.Drawable;
 import android.os.Bundle;
 import android.print.PrintManager;
-import android.print.PrintServicesLoader;
 import android.print.PrinterDiscoverySession;
 import android.print.PrinterDiscoverySession.OnPrintersChangeListener;
 import android.print.PrinterId;
diff --git a/src/com/android/settings/print/PrintServicesLoader.java b/src/com/android/settings/print/PrintServicesLoader.java
new file mode 100644
index 0000000..57cddb9
--- /dev/null
+++ b/src/com/android/settings/print/PrintServicesLoader.java
@@ -0,0 +1,126 @@
+/*
+ * Copyright (C) 2018 The Android Open Source Project
+ *
+ * Licensed under the Apache License, Version 2.0 (the "License");
+ * you may not use this file except in compliance with the License.
+ * You may obtain a copy of the License at
+ *
+ *      http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package com.android.settings.print;
+
+import android.annotation.NonNull;
+import android.content.Context;
+import android.os.Handler;
+import android.os.Message;
+import android.print.PrintManager;
+import android.printservice.PrintServiceInfo;
+
+import com.android.internal.util.Preconditions;
+
+import java.util.List;
+
+import androidx.loader.content.Loader;
+
+/**
+ * Loader for the list of print services. Can be parametrized to select a subset.
+ *
+ */
+public class PrintServicesLoader extends Loader<List<PrintServiceInfo>> {
+    /** What type of services to load. */
+    private final int mSelectionFlags;
+
+    /** The print manager to be used by this object */
+    private final @NonNull PrintManager mPrintManager;
+
+    /** Handler to sequentialize the delivery of the results to the main thread */
+    private final @NonNull Handler mHandler;
+
+    /** Listens for updates to the data from the platform */
+    private PrintManager.PrintServicesChangeListener mListener;
+
+    /**
+     * Create a new PrintServicesLoader.
+     *
+     * @param printManager   The print manager supplying the data
+     * @param context        Context of the using object
+     * @param selectionFlags What type of services to load.
+     */
+    public PrintServicesLoader(@NonNull PrintManager printManager, @NonNull Context context,
+            int selectionFlags) {
+        super(Preconditions.checkNotNull(context));
+        mHandler = new MyHandler();
+        mPrintManager = Preconditions.checkNotNull(printManager);
+        mSelectionFlags = Preconditions.checkFlagsArgument(selectionFlags,
+                PrintManager.ALL_SERVICES);
+    }
+
+    @Override
+    protected void onForceLoad() {
+        queueNewResult();
+    }
+
+    /**
+     * Read the print services and queue it to be delivered on the main thread.
+     */
+    private void queueNewResult() {
+        Message m = mHandler.obtainMessage(0);
+        m.obj = mPrintManager.getPrintServices(mSelectionFlags);
+        mHandler.sendMessage(m);
+    }
+
+    @Override
+    protected void onStartLoading() {
+        mListener = new PrintManager.PrintServicesChangeListener() {
+            @Override public void onPrintServicesChanged() {
+                queueNewResult();
+            }
+        };
+
+        mPrintManager.addPrintServicesChangeListener(mListener, null);
+
+        // Immediately deliver a result
+        deliverResult(mPrintManager.getPrintServices(mSelectionFlags));
+    }
+
+    @Override
+    protected void onStopLoading() {
+        if (mListener != null) {
+            mPrintManager.removePrintServicesChangeListener(mListener);
+            mListener = null;
+        }
+
+        mHandler.removeMessages(0);
+    }
+
+    @Override
+    protected void onReset() {
+        onStopLoading();
+    }
+
+    /**
+     * Handler to sequentialize all the updates to the main thread.
+     */
+    private class MyHandler extends Handler {
+        /**
+         * Create a new handler on the main thread.
+         */
+        public MyHandler() {
+            super(getContext().getMainLooper());
+        }
+
+        @Override
+        public void handleMessage(Message msg) {
+            if (isStarted()) {
+                deliverResult((List<PrintServiceInfo>) msg.obj);
+            }
+        }
+    }
+}
diff --git a/src/com/android/settings/print/PrintSettingsFragment.java b/src/com/android/settings/print/PrintSettingsFragment.java
index 844f9f1..a6b3d7e 100644
--- a/src/com/android/settings/print/PrintSettingsFragment.java
+++ b/src/com/android/settings/print/PrintSettingsFragment.java
@@ -32,7 +32,6 @@
 import android.print.PrintJobInfo;
 import android.print.PrintManager;
 import android.print.PrintManager.PrintJobStateChangeListener;
-import android.print.PrintServicesLoader;
 import android.printservice.PrintServiceInfo;
 import android.provider.SearchIndexableResource;
 import android.provider.Settings;
diff --git a/src/com/android/settings/search/actionbar/SearchMenuController.java b/src/com/android/settings/search/actionbar/SearchMenuController.java
index a3bb234..2fcc048 100644
--- a/src/com/android/settings/search/actionbar/SearchMenuController.java
+++ b/src/com/android/settings/search/actionbar/SearchMenuController.java
@@ -40,11 +40,11 @@
     private final Fragment mHost;
 
     public static void init(@NonNull ObservablePreferenceFragment host) {
-        host.getLifecycle().addObserver(new SearchMenuController(host));
+        host.getSettingsLifecycle().addObserver(new SearchMenuController(host));
     }
 
     public static void init(@NonNull ObservableFragment host) {
-        host.getLifecycle().addObserver(new SearchMenuController(host));
+        host.getSettingsLifecycle().addObserver(new SearchMenuController(host));
     }
 
     private SearchMenuController(@NonNull Fragment host) {
diff --git a/src/com/android/settings/security/EncryptionAndCredential.java b/src/com/android/settings/security/EncryptionAndCredential.java
index 9096486..7f50c5d 100644
--- a/src/com/android/settings/security/EncryptionAndCredential.java
+++ b/src/com/android/settings/security/EncryptionAndCredential.java
@@ -56,7 +56,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle());
+        return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
     @Override
diff --git a/src/com/android/settings/security/LockscreenDashboardFragment.java b/src/com/android/settings/security/LockscreenDashboardFragment.java
index eaaf51d..e214720 100644
--- a/src/com/android/settings/security/LockscreenDashboardFragment.java
+++ b/src/com/android/settings/security/LockscreenDashboardFragment.java
@@ -100,7 +100,7 @@
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
         final List<AbstractPreferenceController> controllers = new ArrayList<>();
-        final Lifecycle lifecycle = getLifecycle();
+        final Lifecycle lifecycle = getSettingsLifecycle();
         final LockScreenNotificationPreferenceController notificationController =
                 new LockScreenNotificationPreferenceController(context,
                         KEY_LOCK_SCREEN_NOTIFICATON,
diff --git a/src/com/android/settings/security/SecuritySettings.java b/src/com/android/settings/security/SecuritySettings.java
index ed6b4e9..effbd51 100644
--- a/src/com/android/settings/security/SecuritySettings.java
+++ b/src/com/android/settings/security/SecuritySettings.java
@@ -79,7 +79,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle(), this /* host*/);
+        return buildPreferenceControllers(context, getSettingsLifecycle(), this /* host*/);
     }
 
     /**
diff --git a/src/com/android/settings/security/screenlock/ScreenLockSettings.java b/src/com/android/settings/security/screenlock/ScreenLockSettings.java
index ec147d4..abb4b33 100644
--- a/src/com/android/settings/security/screenlock/ScreenLockSettings.java
+++ b/src/com/android/settings/security/screenlock/ScreenLockSettings.java
@@ -65,7 +65,7 @@
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
         mLockPatternUtils = new LockPatternUtils(context);
-        return buildPreferenceControllers(context, this /* parent */, getLifecycle(),
+        return buildPreferenceControllers(context, this /* parent */, getSettingsLifecycle(),
                 mLockPatternUtils);
     }
 
diff --git a/src/com/android/settings/support/actionbar/HelpMenuController.java b/src/com/android/settings/support/actionbar/HelpMenuController.java
index 8ea98aa..3ac248c 100644
--- a/src/com/android/settings/support/actionbar/HelpMenuController.java
+++ b/src/com/android/settings/support/actionbar/HelpMenuController.java
@@ -40,11 +40,11 @@
     private final Fragment mHost;
 
     public static void init(@NonNull ObservablePreferenceFragment host) {
-        host.getLifecycle().addObserver(new HelpMenuController(host));
+        host.getSettingsLifecycle().addObserver(new HelpMenuController(host));
     }
 
     public static void init(@NonNull ObservableFragment host) {
-        host.getLifecycle().addObserver(new HelpMenuController(host));
+        host.getSettingsLifecycle().addObserver(new HelpMenuController(host));
     }
 
     private HelpMenuController(@NonNull Fragment host) {
diff --git a/src/com/android/settings/system/ResetDashboardFragment.java b/src/com/android/settings/system/ResetDashboardFragment.java
index 153177a..772f18b 100644
--- a/src/com/android/settings/system/ResetDashboardFragment.java
+++ b/src/com/android/settings/system/ResetDashboardFragment.java
@@ -55,7 +55,7 @@
 
     @Override
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
-        return buildPreferenceControllers(context, getLifecycle());
+        return buildPreferenceControllers(context, getSettingsLifecycle());
     }
 
     private static List<AbstractPreferenceController> buildPreferenceControllers(Context context,
diff --git a/src/com/android/settings/users/MultiUserFooterPreferenceController.java b/src/com/android/settings/users/MultiUserFooterPreferenceController.java
index 877df58..f42f190 100644
--- a/src/com/android/settings/users/MultiUserFooterPreferenceController.java
+++ b/src/com/android/settings/users/MultiUserFooterPreferenceController.java
@@ -21,7 +21,7 @@
 import com.android.settings.R;
 import com.android.settings.core.BasePreferenceController;
 import com.android.settingslib.widget.FooterPreference;
-import com.android.settingslib.widget.FooterPreferenceMixin;
+import com.android.settingslib.widget.FooterPreferenceMixinCompat;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.Preference;
@@ -31,14 +31,15 @@
     @VisibleForTesting
     final UserCapabilities mUserCaps;
 
-    private FooterPreferenceMixin mFooterMixin;
+    private FooterPreferenceMixinCompat mFooterMixin;
 
     public MultiUserFooterPreferenceController(Context context) {
         super(context, "dummy_key");
         mUserCaps = UserCapabilities.create(context);
     }
 
-    public MultiUserFooterPreferenceController setFooterMixin(FooterPreferenceMixin footerMixin) {
+    public MultiUserFooterPreferenceController setFooterMixin(
+            FooterPreferenceMixinCompat footerMixin) {
         mFooterMixin = footerMixin;
         return this;
     }
diff --git a/src/com/android/settings/users/UserSettings.java b/src/com/android/settings/users/UserSettings.java
index 931fdcf..7d84d99 100644
--- a/src/com/android/settings/users/UserSettings.java
+++ b/src/com/android/settings/users/UserSettings.java
@@ -216,7 +216,7 @@
         final SwitchBar switchBar = activity.getSwitchBar();
         mSwitchBarController = new MultiUserSwitchBarController(activity,
                 new SwitchBarController(switchBar), this /* listener */);
-        getLifecycle().addObserver(mSwitchBarController);
+        getSettingsLifecycle().addObserver(mSwitchBarController);
         switchBar.show();
     }
 
diff --git a/src/com/android/settings/widget/UpdatableListPreferenceDialogFragment.java b/src/com/android/settings/widget/UpdatableListPreferenceDialogFragment.java
index 5877078..4d54192 100644
--- a/src/com/android/settings/widget/UpdatableListPreferenceDialogFragment.java
+++ b/src/com/android/settings/widget/UpdatableListPreferenceDialogFragment.java
@@ -15,7 +15,6 @@
  */
 package com.android.settings.widget;
 
-import android.app.AlertDialog;
 import android.content.res.TypedArray;
 import android.os.Bundle;
 import android.widget.ArrayAdapter;
@@ -25,14 +24,15 @@
 import java.util.ArrayList;
 
 import androidx.annotation.VisibleForTesting;
+import androidx.appcompat.app.AlertDialog.Builder;
 import androidx.preference.ListPreference;
-import androidx.preference.PreferenceDialogFragment;
+import androidx.preference.PreferenceDialogFragmentCompat;
 
 /**
- * {@link PreferenceDialogFragment} that updates the available options
+ * {@link PreferenceDialogFragmentCompat} that updates the available options
  * when {@code onListPreferenceUpdated} is called."
  */
-public class UpdatableListPreferenceDialogFragment extends PreferenceDialogFragment implements
+public class UpdatableListPreferenceDialogFragment extends PreferenceDialogFragmentCompat implements
         Instrumentable {
 
     private static final String SAVE_STATE_INDEX = "UpdatableListPreferenceDialogFragment.index";
@@ -115,7 +115,7 @@
     }
 
     @Override
-    protected void onPrepareDialogBuilder(AlertDialog.Builder builder) {
+    protected void onPrepareDialogBuilder(Builder builder) {
         super.onPrepareDialogBuilder(builder);
         final TypedArray a = getContext().obtainStyledAttributes(
                 null,
diff --git a/src/com/android/settings/widget/ValidatedEditTextPreference.java b/src/com/android/settings/widget/ValidatedEditTextPreference.java
index 35be502..aec362f 100644
--- a/src/com/android/settings/widget/ValidatedEditTextPreference.java
+++ b/src/com/android/settings/widget/ValidatedEditTextPreference.java
@@ -27,7 +27,7 @@
 import android.widget.EditText;
 import android.widget.TextView;
 
-import com.android.settingslib.CustomEditTextPreference;
+import com.android.settingslib.CustomEditTextPreferenceCompat;
 
 import androidx.annotation.VisibleForTesting;
 import androidx.preference.PreferenceViewHolder;
@@ -35,7 +35,7 @@
 /**
  * {@code EditTextPreference} that supports input validation.
  */
-public class ValidatedEditTextPreference extends CustomEditTextPreference {
+public class ValidatedEditTextPreference extends CustomEditTextPreferenceCompat {
 
     public interface Validator {
         boolean isTextValid(String value);
diff --git a/src/com/android/settings/wifi/ConfigureWifiSettings.java b/src/com/android/settings/wifi/ConfigureWifiSettings.java
index e0e63cc..1d1c30c 100644
--- a/src/com/android/settings/wifi/ConfigureWifiSettings.java
+++ b/src/com/android/settings/wifi/ConfigureWifiSettings.java
@@ -76,15 +76,18 @@
     protected List<AbstractPreferenceController> createPreferenceControllers(Context context) {
         mWifiWakeupPreferenceController = new WifiWakeupPreferenceController(context, this);
         mUseOpenWifiPreferenceController = new UseOpenWifiPreferenceController(context, this,
-                getLifecycle());
+                getSettingsLifecycle());
         final WifiManager wifiManager = (WifiManager) getSystemService(WIFI_SERVICE);
         final List<AbstractPreferenceController> controllers = new ArrayList<>();
         controllers.add(mWifiWakeupPreferenceController);
-        controllers.add(new NotifyOpenNetworksPreferenceController(context, getLifecycle()));
+        controllers.add(new NotifyOpenNetworksPreferenceController(context,
+                getSettingsLifecycle()));
         controllers.add(mUseOpenWifiPreferenceController);
-        controllers.add(new WifiInfoPreferenceController(context, getLifecycle(), wifiManager));
+        controllers.add(new WifiInfoPreferenceController(context, getSettingsLifecycle(),
+                wifiManager));
         controllers.add(new CellularFallbackPreferenceController(context));
-        controllers.add(new WifiP2pPreferenceController(context, getLifecycle(), wifiManager));
+        controllers.add(new WifiP2pPreferenceController(context, getSettingsLifecycle(),
+                wifiManager));
         return controllers;
     }
 
diff --git a/src/com/android/settings/wifi/WifiPickerActivity.java b/src/com/android/settings/wifi/WifiPickerActivity.java
index d035a80..ca392ce 100644
--- a/src/com/android/settings/wifi/WifiPickerActivity.java
+++ b/src/com/android/settings/wifi/WifiPickerActivity.java
@@ -22,6 +22,8 @@
 import com.android.settings.SettingsActivity;
 import com.android.settings.wifi.p2p.WifiP2pSettings;
 
+import androidx.preference.PreferenceFragmentCompat;
+
 public class WifiPickerActivity extends SettingsActivity implements ButtonBarHandler {
 
     @Override
@@ -44,7 +46,7 @@
         return false;
     }
 
-    /* package */ Class<? extends PreferenceFragment> getWifiSettingsClass() {
+    /* package */ Class<? extends PreferenceFragmentCompat> getWifiSettingsClass() {
         return WifiSettings.class;
     }
 }
diff --git a/src/com/android/settings/wifi/WifiScanModeActivity.java b/src/com/android/settings/wifi/WifiScanModeActivity.java
index 704c6fd..4742f63 100644
--- a/src/com/android/settings/wifi/WifiScanModeActivity.java
+++ b/src/com/android/settings/wifi/WifiScanModeActivity.java
@@ -16,7 +16,6 @@
 
 package com.android.settings.wifi;
 
-import android.app.Activity;
 import android.app.AlertDialog;
 import android.app.Dialog;
 import android.content.DialogInterface;
@@ -32,11 +31,12 @@
 import com.android.settings.core.instrumentation.InstrumentedDialogFragment;
 
 import androidx.fragment.app.DialogFragment;
+import androidx.fragment.app.FragmentActivity;
 
 /**
  * This activity requests users permission to allow scanning even when Wi-Fi is turned off
  */
-public class WifiScanModeActivity extends Activity {
+public class WifiScanModeActivity extends FragmentActivity {
     private DialogFragment mDialog;
     private String mApp;
 
@@ -67,7 +67,7 @@
     private void createDialog() {
         if (mDialog == null) {
             mDialog = AlertDialogFragment.newInstance(mApp);
-            mDialog.show(getFragmentManager(), "dialog");
+            mDialog.show(getSupportFragmentManager(), "dialog");
         }
     }
 
diff --git a/src/com/android/settings/wifi/WifiSettings.java b/src/com/android/settings/wifi/WifiSettings.java
index 5397eae..e5ff3d9 100644
--- a/src/com/android/settings/wifi/WifiSettings.java
+++ b/src/com/android/settings/wifi/WifiSettings.java
@@ -243,7 +243,7 @@
         super.onActivityCreated(savedInstanceState);
 
         mWifiTracker = WifiTrackerFactory.create(
-                getActivity(), this, getLifecycle(), true, true);
+                getActivity(), this, getSettingsLifecycle(), true, true);
         mWifiManager = mWifiTracker.getManager();
 
         final Activity activity = getActivity();
diff --git a/src/com/android/settings/wifi/calling/WifiCallingSettings.java b/src/com/android/settings/wifi/calling/WifiCallingSettings.java
index ec27bac..5762b7b 100644
--- a/src/com/android/settings/wifi/calling/WifiCallingSettings.java
+++ b/src/com/android/settings/wifi/calling/WifiCallingSettings.java
@@ -38,7 +38,7 @@
 
 import androidx.fragment.app.Fragment;
 import androidx.fragment.app.FragmentManager;
-import androidx.legacy.app.FragmentPagerAdapter;
+import androidx.fragment.app.FragmentPagerAdapter;
 
 /**
  * "Wi-Fi Calling settings" screen. This is the container fragment which holds
diff --git a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
index 3438035..d114e06 100644
--- a/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
+++ b/src/com/android/settings/wifi/details/WifiNetworkDetailsFragment.java
@@ -128,7 +128,7 @@
                 context,
                 this,
                 new Handler(Looper.getMainLooper()),  // UI thread.
-                getLifecycle(),
+                getSettingsLifecycle(),
                 context.getSystemService(WifiManager.class),
                 mMetricsFeatureProvider);
 
diff --git a/src/com/android/settings/wifi/tether/WifiTetherSettings.java b/src/com/android/settings/wifi/tether/WifiTetherSettings.java
index b6db02c..16908d6 100644
--- a/src/com/android/settings/wifi/tether/WifiTetherSettings.java
+++ b/src/com/android/settings/wifi/tether/WifiTetherSettings.java
@@ -110,7 +110,7 @@
         final SwitchBar switchBar = activity.getSwitchBar();
         mSwitchBarController = new WifiTetherSwitchBarController(activity,
                 new SwitchBarController(switchBar));
-        getLifecycle().addObserver(mSwitchBarController);
+        getSettingsLifecycle().addObserver(mSwitchBarController);
         switchBar.show();
     }