Loading core/java/android/preference/PreferenceActivity.java +25 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.preference; import static android.window.OnBackInvokedDispatcher.PRIORITY_DEFAULT; import android.animation.LayoutTransition; import android.annotation.Nullable; import android.annotation.StringRes; Loading Loading @@ -54,6 +56,8 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.window.OnBackInvokedCallback; import android.window.WindowOnBackInvokedDispatcher; import com.android.internal.util.XmlUtils; Loading Loading @@ -209,6 +213,8 @@ public abstract class PreferenceActivity extends ListActivity implements private int mPreferenceHeaderItemResId = 0; private boolean mPreferenceHeaderRemoveEmptyIcon = false; private final OnBackInvokedCallback mOnBackInvokedCallback = this::onBackInvoked; /** * The starting request code given out to preference framework. */ Loading Loading @@ -699,10 +705,26 @@ public abstract class PreferenceActivity extends ListActivity implements skipButton.setVisibility(View.VISIBLE); } } updateBackCallbackRegistrationState(); } @Override public void onBackPressed() { onBackInvoked(); } private void updateBackCallbackRegistrationState() { if (!WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(this)) return; if (mCurHeader != null && mSinglePane && getFragmentManager().getBackStackEntryCount() == 0 && getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT) == null) { getOnBackInvokedDispatcher() .registerOnBackInvokedCallback(PRIORITY_DEFAULT, mOnBackInvokedCallback); } else { getOnBackInvokedDispatcher().unregisterOnBackInvokedCallback(mOnBackInvokedCallback); } } private void onBackInvoked() { if (mCurHeader != null && mSinglePane && getFragmentManager().getBackStackEntryCount() == 0 && getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT) == null) { mCurHeader = null; Loading @@ -713,9 +735,10 @@ public abstract class PreferenceActivity extends ListActivity implements showBreadCrumbs(mActivityTitle, null); } getListView().clearChoices(); } else { } else if (!WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(this)) { super.onBackPressed(); } updateBackCallbackRegistrationState(); } /** Loading Loading @@ -1221,6 +1244,7 @@ public abstract class PreferenceActivity extends ListActivity implements getListView().clearChoices(); } showBreadCrumbs(header); updateBackCallbackRegistrationState(); } void showBreadCrumbs(Header header) { Loading Loading
core/java/android/preference/PreferenceActivity.java +25 −1 Original line number Diff line number Diff line Loading @@ -16,6 +16,8 @@ package android.preference; import static android.window.OnBackInvokedDispatcher.PRIORITY_DEFAULT; import android.animation.LayoutTransition; import android.annotation.Nullable; import android.annotation.StringRes; Loading Loading @@ -54,6 +56,8 @@ import android.widget.FrameLayout; import android.widget.ImageView; import android.widget.ListView; import android.widget.TextView; import android.window.OnBackInvokedCallback; import android.window.WindowOnBackInvokedDispatcher; import com.android.internal.util.XmlUtils; Loading Loading @@ -209,6 +213,8 @@ public abstract class PreferenceActivity extends ListActivity implements private int mPreferenceHeaderItemResId = 0; private boolean mPreferenceHeaderRemoveEmptyIcon = false; private final OnBackInvokedCallback mOnBackInvokedCallback = this::onBackInvoked; /** * The starting request code given out to preference framework. */ Loading Loading @@ -699,10 +705,26 @@ public abstract class PreferenceActivity extends ListActivity implements skipButton.setVisibility(View.VISIBLE); } } updateBackCallbackRegistrationState(); } @Override public void onBackPressed() { onBackInvoked(); } private void updateBackCallbackRegistrationState() { if (!WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(this)) return; if (mCurHeader != null && mSinglePane && getFragmentManager().getBackStackEntryCount() == 0 && getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT) == null) { getOnBackInvokedDispatcher() .registerOnBackInvokedCallback(PRIORITY_DEFAULT, mOnBackInvokedCallback); } else { getOnBackInvokedDispatcher().unregisterOnBackInvokedCallback(mOnBackInvokedCallback); } } private void onBackInvoked() { if (mCurHeader != null && mSinglePane && getFragmentManager().getBackStackEntryCount() == 0 && getIntent().getStringExtra(EXTRA_SHOW_FRAGMENT) == null) { mCurHeader = null; Loading @@ -713,9 +735,10 @@ public abstract class PreferenceActivity extends ListActivity implements showBreadCrumbs(mActivityTitle, null); } getListView().clearChoices(); } else { } else if (!WindowOnBackInvokedDispatcher.isOnBackInvokedCallbackEnabled(this)) { super.onBackPressed(); } updateBackCallbackRegistrationState(); } /** Loading Loading @@ -1221,6 +1244,7 @@ public abstract class PreferenceActivity extends ListActivity implements getListView().clearChoices(); } showBreadCrumbs(header); updateBackCallbackRegistrationState(); } void showBreadCrumbs(Header header) { Loading