Immediately apply the dark mode setting once it's changed

This commit is contained in:
Alexander Bakker 2018-05-11 21:30:15 +02:00
parent 4aa9374e0b
commit a681efcf2d
2 changed files with 29 additions and 3 deletions

View file

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

View file

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