From c2e297139587600e3b6beed96602713738e5f464 Mon Sep 17 00:00:00 2001 From: sspanak Date: Tue, 25 Feb 2025 17:21:38 +0200 Subject: [PATCH] removed 2 more Activity.onBackPressed() calls --- .../tt9/preferences/PreferencesActivity.java | 45 +++++++++---------- .../screens/BaseScreenFragment.java | 2 +- .../screens/debug/ItemDemoMode.java | 2 +- 3 files changed, 23 insertions(+), 26 deletions(-) diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/PreferencesActivity.java b/app/src/main/java/io/github/sspanak/tt9/preferences/PreferencesActivity.java index 0504c9ed..0e4616d9 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/PreferencesActivity.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/PreferencesActivity.java @@ -39,6 +39,24 @@ import io.github.sspanak.tt9.util.Logger; import io.github.sspanak.tt9.util.SystemSettings; public class PreferencesActivity extends ActivityWithNavigation implements PreferenceFragmentCompat.OnPreferenceStartFragmentCallback { + /** + * onBackPressed() is deprecated, so calling the onBackPressed() on the Fragments is now more complicated. + */ + @NonNull public OnBackPressedCallback onBackPressedCallback = new OnBackPressedCallback(true) { + @Override + public void handleOnBackPressed() { + Fragment previousFragment = getSupportFragmentManager().findFragmentById(R.id.preferences_container); + if (previousFragment instanceof BaseScreenFragment) { + ((BaseScreenFragment) previousFragment).onBackPressed(); + } + + setEnabled(false); + getOnBackPressedDispatcher().onBackPressed(); + setEnabled(true); + } + }; + + @Override protected void onCreate(Bundle savedInstanceState) { getSettings(); @@ -53,7 +71,9 @@ public class PreferencesActivity extends ActivityWithNavigation implements Prefe validateFunctionKeys(); super.onCreate(savedInstanceState); - setOnBackPressed(); + + // On API >= 33, this requires android:enableOnBackInvokedCallback="true" in the manifest + getOnBackPressedDispatcher().addCallback(this, onBackPressedCallback); // changing the theme causes onCreate(), which displays the MainSettingsScreen, // but leaves the old "back" history, which is no longer valid, @@ -100,29 +120,6 @@ public class PreferencesActivity extends ActivityWithNavigation implements Prefe } - /** - * onBackPressed() is deprecated, so calling the onBackPressed() on the Fragments is now more complicated. - */ - private void setOnBackPressed() { - OnBackPressedCallback onBackPressedCallback = new OnBackPressedCallback(true) { - @Override - public void handleOnBackPressed() { - Fragment previousFragment = getSupportFragmentManager().findFragmentById(R.id.preferences_container); - if (previousFragment instanceof BaseScreenFragment) { - ((BaseScreenFragment) previousFragment).onBackPressed(); - } - - setEnabled(false); - getOnBackPressedDispatcher().onBackPressed(); - setEnabled(true); - } - }; - - // On API >= 33, this requires android:enableOnBackInvokedCallback="true" in the manifest - getOnBackPressedDispatcher().addCallback(this, onBackPressedCallback); - } - - @Override protected void selectOption(int position, boolean click) { // for convenience, scroll to the bottom on 0-key click diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/BaseScreenFragment.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/BaseScreenFragment.java index 5938e1c4..e7f13ff2 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/BaseScreenFragment.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/BaseScreenFragment.java @@ -73,7 +73,7 @@ abstract public class BaseScreenFragment extends PreferenceFragmentCompat { @Override public boolean onOptionsItemSelected(@NonNull MenuItem item) { if (item.getItemId() == android.R.id.home && activity != null && !super.onOptionsItemSelected(item)) { - activity.onBackPressed(); + activity.onBackPressedCallback.handleOnBackPressed(); return true; } diff --git a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/ItemDemoMode.java b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/ItemDemoMode.java index fb86588b..19c2ab0e 100644 --- a/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/ItemDemoMode.java +++ b/app/src/main/java/io/github/sspanak/tt9/preferences/screens/debug/ItemDemoMode.java @@ -19,7 +19,7 @@ class ItemDemoMode extends ItemClickable { @Override protected boolean onClick(Preference p) { activity.getSettings().setDemoMode(((SwitchPreferenceCompat) p).isChecked()); - activity.onBackPressed(); + activity.onBackPressedCallback.handleOnBackPressed(); return true; }