From 4c8b8f2df257d1a5caf3d28b4a7543ce528d2fe5 Mon Sep 17 00:00:00 2001 From: Ender's Games Date: Wed, 8 Aug 2018 16:59:51 -0400 Subject: [PATCH] Android: Close via clearing the fragment Once again, background support requires special consideration. Closing the application does not remove it from the background stack (thus not clearing view) --- .../reicast/emulator/config/OptionsFragment.java | 15 ++++++++++++++- 1 file changed, 14 insertions(+), 1 deletion(-) diff --git a/shell/android-studio/reicast/src/main/java/com/reicast/emulator/config/OptionsFragment.java b/shell/android-studio/reicast/src/main/java/com/reicast/emulator/config/OptionsFragment.java index 780375e0f..5d336b62e 100644 --- a/shell/android-studio/reicast/src/main/java/com/reicast/emulator/config/OptionsFragment.java +++ b/shell/android-studio/reicast/src/main/java/com/reicast/emulator/config/OptionsFragment.java @@ -15,6 +15,8 @@ import android.support.constraint.ConstraintLayout; import android.support.design.widget.Snackbar; import android.support.graphics.drawable.VectorDrawableCompat; import android.support.v4.app.Fragment; +import android.support.v4.app.FragmentManager; +import android.support.v4.app.FragmentTransaction; import android.text.Editable; import android.text.TextWatcher; import android.view.Gravity; @@ -580,7 +582,6 @@ public class OptionsFragment extends Fragment { b.setPositiveButton(android.R.string.yes, new DialogInterface.OnClickListener() { public void onClick(DialogInterface dialog, int id) { resetEmuSettings(); - getActivity().finishAffinity(); } }); b.setNegativeButton(android.R.string.no, null); @@ -727,6 +728,18 @@ public class OptionsFragment extends Fragment { mPrefs.edit().remove(Emulator.pref_nosound).apply(); mPrefs.edit().remove(Config.pref_renderdepth).apply(); mPrefs.edit().remove(Config.pref_theme).apply(); + + Emulator app = (Emulator) getActivity().getApplicationContext(); + app.getConfigurationPrefs(mPrefs); + + FragmentManager manager = getActivity().getSupportFragmentManager(); + FragmentTransaction ft = manager.beginTransaction(); + Fragment newFragment = this; + this.onDestroy(); + ft.remove(this); + ft.replace(R.id.fragment_container,newFragment); + ft.addToBackStack(null); + ft.commit(); } private void showToastMessage(String message, int duration) {