diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java index 8fd21c207..3103a6804 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/DisplayFragment.java @@ -31,6 +31,7 @@ import static java.util.logging.Level.INFO; import static java.util.logging.Logger.getLogger; import static org.briarproject.briar.android.BriarApplication.ENTRY_ACTIVITY; import static org.briarproject.briar.android.navdrawer.NavDrawerActivity.SIGN_OUT_URI; +import static org.briarproject.briar.android.settings.SettingsActivity.EXTRA_THEME_CHANGE; @NotNullByDefault public class DisplayFragment extends PreferenceFragmentCompat { @@ -131,8 +132,8 @@ public class DisplayFragment extends PreferenceFragmentCompat { intent.setFlags(FLAG_ACTIVITY_CLEAR_TASK | FLAG_ACTIVITY_NEW_TASK); startActivity(intent); // bring this activity back to the foreground - // TODO maybe tell the activity here to relaunch this fragment? intent = new Intent(getActivity(), activity.getClass()); + intent.putExtra(EXTRA_THEME_CHANGE, true); startActivity(intent); activity.finish(); return true; diff --git a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsActivity.java b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsActivity.java index afb93173f..18b3c0f6c 100644 --- a/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsActivity.java +++ b/briar-android/src/main/java/org/briarproject/briar/android/settings/SettingsActivity.java @@ -23,6 +23,8 @@ import androidx.preference.PreferenceFragmentCompat.OnPreferenceStartFragmentCal public class SettingsActivity extends BriarActivity implements OnPreferenceStartFragmentCallback { + static final String EXTRA_THEME_CHANGE = "themeChange"; + @Override public void injectActivity(ActivityComponent component) { component.inject(this); @@ -38,6 +40,14 @@ public class SettingsActivity extends BriarActivity actionBar.setDisplayHomeAsUpEnabled(true); } + // show display fragment after theme change + Bundle extras = getIntent().getExtras(); + if (bundle == null && extras != null && + extras.getBoolean(EXTRA_THEME_CHANGE, false)) { + FragmentManager fragmentManager = getSupportFragmentManager(); + showNextFragment(fragmentManager, new DisplayFragment()); + } + setContentView(R.layout.activity_settings); } @@ -59,14 +69,18 @@ public class SettingsActivity extends BriarActivity .instantiate(getClassLoader(), pref.getFragment()); fragment.setTargetFragment(caller, 0); // Replace the existing Fragment with the new Fragment + showNextFragment(fragmentManager, fragment); + return true; + } + + private void showNextFragment(FragmentManager fragmentManager, Fragment f) { fragmentManager.beginTransaction() .setCustomAnimations(R.anim.step_next_in, R.anim.step_previous_out, R.anim.step_previous_in, R.anim.step_next_out) - .replace(R.id.fragmentContainer, fragment) + .replace(R.id.fragmentContainer, f) .addToBackStack(null) .commit(); - return true; } /**