From 1ba43c726d86fb0e3a96c1703fb14c8fa21c645c Mon Sep 17 00:00:00 2001 From: JosJuice Date: Fri, 21 Aug 2020 17:09:30 +0200 Subject: [PATCH] Android: Fix SettingsActivity back stack behavior after stop+start Fixes the behavior where the settings activity would go back to the top-level menu after switching to a different app and back. --- .../features/settings/ui/SettingsActivity.java | 16 ++++------------ .../settings/ui/SettingsActivityPresenter.java | 16 ---------------- .../settings/ui/SettingsActivityView.java | 5 ----- 3 files changed, 4 insertions(+), 33 deletions(-) diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivity.java b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivity.java index 8a078d0eb..23c3c4c9e 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivity.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivity.java @@ -96,14 +96,12 @@ public final class SettingsActivity extends AppCompatActivity implements Setting getWindowManager().getDefaultDisplay().getRotation()); } - @Override - public void onBackPressed() { - mPresenter.onBackPressed(); - } - - @Override public void showSettingsFragment(String menuTag, boolean addToStack, String gameID) { + if (!addToStack && getFragment() != null) { + return; + } + FragmentTransaction transaction = getSupportFragmentManager().beginTransaction(); if (addToStack) { @@ -116,7 +114,6 @@ public final class SettingsActivity extends AppCompatActivity implements Setting } transaction.addToBackStack(null); - mPresenter.addToStack(); } transaction.replace(R.id.frame_content, SettingsFragment.newInstance(menuTag, gameID), FRAGMENT_TAG); @@ -207,11 +204,6 @@ public final class SettingsActivity extends AppCompatActivity implements Setting Toast.makeText(this, message, is_long ? Toast.LENGTH_LONG : Toast.LENGTH_SHORT).show(); } - @Override - public void popBackStack() { - getSupportFragmentManager().popBackStackImmediate(); - } - @Override public void onSettingChanged() { mPresenter.onSettingChanged(); diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityPresenter.java b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityPresenter.java index cda6b6cb6..0d63873bb 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityPresenter.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityPresenter.java @@ -22,8 +22,6 @@ public final class SettingsActivityPresenter { private Settings mSettings = new Settings(); - private int mStackCount; - private boolean mShouldSave; private DirectoryStateReceiver directoryStateReceiver; @@ -45,7 +43,6 @@ public final class SettingsActivityPresenter { } public void onStart() { - this.mStackCount = 0; prepareCitraDirectoriesIfNeeded(); } @@ -117,19 +114,6 @@ public final class SettingsActivityPresenter { NativeLibrary.ReloadSettings(); } - public void addToStack() { - mStackCount++; - } - - public void onBackPressed() { - if (mStackCount > 0) { - mView.popBackStack(); - mStackCount--; - } else { - mView.finish(); - } - } - public void onSettingChanged() { mShouldSave = true; } diff --git a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityView.java b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityView.java index eed454242..0d26d48a7 100644 --- a/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityView.java +++ b/src/android/app/src/main/java/org/citra/citra_emu/features/settings/ui/SettingsActivityView.java @@ -55,11 +55,6 @@ public interface SettingsActivityView { */ void showToastMessage(String message, boolean is_long); - /** - * Show the previous fragment. - */ - void popBackStack(); - /** * End the activity. */