1
0
Fork 0

removed 2 more Activity.onBackPressed() calls

This commit is contained in:
sspanak 2025-02-25 17:21:38 +02:00 committed by Dimo Karaivanov
parent 12b9f9f75a
commit c2e2971395
3 changed files with 23 additions and 26 deletions

View file

@ -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

View file

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

View file

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