From a681efcf2d196a364f4ee7409b3760cbcdb63c0e Mon Sep 17 00:00:00 2001 From: Alexander Bakker Date: Fri, 11 May 2018 21:30:15 +0200 Subject: [PATCH] Immediately apply the dark mode setting once it's changed --- .../me/impy/aegis/ui/PreferencesActivity.java | 17 +++++++++++++++++ .../me/impy/aegis/ui/PreferencesFragment.java | 15 ++++++++++++--- 2 files changed, 29 insertions(+), 3 deletions(-) diff --git a/app/src/main/java/me/impy/aegis/ui/PreferencesActivity.java b/app/src/main/java/me/impy/aegis/ui/PreferencesActivity.java index 04d51d9a..94989a60 100644 --- a/app/src/main/java/me/impy/aegis/ui/PreferencesActivity.java +++ b/app/src/main/java/me/impy/aegis/ui/PreferencesActivity.java @@ -30,4 +30,21 @@ public class PreferencesActivity extends AegisActivity { // pass permission request results to the fragment _fragment.onRequestPermissionsResult(requestCode, permissions, grantResults); } + + @Override + protected final void onRestoreInstanceState(final Bundle inState) { + // pass the stored result intent back to the fragment + if (inState.containsKey("result")) { + _fragment.setResult(inState.getParcelable("result")); + } + super.onRestoreInstanceState(inState); + } + + @Override + protected final void onSaveInstanceState(final Bundle outState) { + // save the result intent of the fragment + // this is done so we don't lose anything if the fragment calls recreate on this activity + outState.putParcelable("result", _fragment.getResult()); + super.onSaveInstanceState(outState); + } } diff --git a/app/src/main/java/me/impy/aegis/ui/PreferencesFragment.java b/app/src/main/java/me/impy/aegis/ui/PreferencesFragment.java index 6e77a6cd..2b2eda0c 100644 --- a/app/src/main/java/me/impy/aegis/ui/PreferencesFragment.java +++ b/app/src/main/java/me/impy/aegis/ui/PreferencesFragment.java @@ -44,7 +44,7 @@ public class PreferencesFragment extends PreferenceFragment { private static final int CODE_PERM_IMPORT = 0; private static final int CODE_PERM_EXPORT = 1; - private Intent _result = new Intent(); + private Intent _result; private DatabaseManager _db; // this is used to keep a reference to a database converter @@ -60,14 +60,14 @@ public class PreferencesFragment extends PreferenceFragment { _db = app.getDatabaseManager(); // set the result intent in advance - getActivity().setResult(Activity.RESULT_OK, _result); + setResult(new Intent()); Preference darkModePreference = findPreference("pref_dark_mode"); darkModePreference.setOnPreferenceChangeListener(new Preference.OnPreferenceChangeListener() { @Override public boolean onPreferenceChange(Preference preference, Object newValue) { _result.putExtra("needsRecreate", true); - Toast.makeText(getActivity(), "Dark mode setting will be applied after closing this screen", Toast.LENGTH_SHORT).show(); + getActivity().recreate(); return true; } }); @@ -175,6 +175,15 @@ public class PreferencesFragment extends PreferenceFragment { } } + public Intent getResult() { + return _result; + } + + public void setResult(Intent result) { + _result = result; + getActivity().setResult(Activity.RESULT_OK, _result); + } + private void onImport() { if (PermissionHelper.request(getActivity(), CODE_PERM_IMPORT, Manifest.permission.READ_EXTERNAL_STORAGE)) { Intent intent = new Intent(Intent.ACTION_GET_CONTENT);