From 0478bb1af9d3b8140e1a430aeeeba12869c71987 Mon Sep 17 00:00:00 2001 From: Mayur Wadhwani Date: Wed, 28 May 2025 08:57:52 +1200 Subject: [PATCH] Fix for app not changing theme if system theme changes (#7772) --- .../danoeh/antennapod/activity/MainActivity.java | 14 ++++++++++++-- 1 file changed, 12 insertions(+), 2 deletions(-) diff --git a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java index d1f625b32..6dbf76c0e 100644 --- a/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java +++ b/app/src/main/java/de/danoeh/antennapod/activity/MainActivity.java @@ -19,6 +19,7 @@ import androidx.activity.OnBackPressedCallback; import androidx.annotation.IdRes; import androidx.annotation.NonNull; import androidx.annotation.Nullable; +import androidx.annotation.StyleRes; import androidx.appcompat.app.ActionBarDrawerToggle; import androidx.core.graphics.Insets; import androidx.core.view.ViewCompat; @@ -513,6 +514,11 @@ public class MainActivity extends CastEnabledActivity { } } + private void restartActivity() { + finish(); + startActivity(new Intent(this, MainActivity.class)); + } + @Override public void onConfigurationChanged(Configuration newConfig) { super.onConfigurationChanged(newConfig); @@ -520,6 +526,11 @@ public class MainActivity extends CastEnabledActivity { drawerToggle.onConfigurationChanged(newConfig); } setNavDrawerSize(); + + @StyleRes int requiredTheme = ThemeSwitcher.getNoTitleTheme(this); + if (requiredTheme != lastTheme) { + restartActivity(); + } } private void setNavDrawerSize() { @@ -568,8 +579,7 @@ public class MainActivity extends CastEnabledActivity { boolean hasBottomNavigation = bottomNavigation != null; if (lastTheme != ThemeSwitcher.getNoTitleTheme(this) || hasBottomNavigation != UserPreferences.isBottomNavigationEnabled()) { - finish(); - startActivity(new Intent(this, MainActivity.class)); + restartActivity(); } if (UserPreferences.getHiddenDrawerItems().contains(NavDrawerFragment.getLastNavFragment(this))) { loadFragment(UserPreferences.getDefaultPage(), null);