diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index ebc72381e..9b5b9153c 100755 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -46,7 +46,7 @@ @@ -89,7 +89,7 @@ @@ -143,7 +143,7 @@ diff --git a/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.java index 926a44ff8..9bb9d9d12 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/EhActivity.java @@ -32,13 +32,11 @@ import com.hippo.ehviewer.R; import com.hippo.ehviewer.Settings; import java.util.Locale; -import java.util.Objects; public abstract class EhActivity extends AppCompatActivity { private static final String THEME_DEFAULT = "DEFAULT"; private static final String THEME_BLACK = "BLACK"; - private String mTheme; public static boolean isBlackNightTheme() { return Settings.getBoolean("black_dark_theme", false); @@ -85,13 +83,16 @@ public abstract class EhActivity extends AppCompatActivity { } } + @Override + protected void onNightModeChanged(int mode) { + getTheme().applyStyle(getThemeStyleRes(this), true); + } + @Override protected void onCreate(@Nullable Bundle savedInstanceState) { super.onCreate(savedInstanceState); ((EhApplication) getApplication()).registerActivity(this); - - mTheme = getTheme(this); } @Override @@ -110,9 +111,6 @@ public abstract class EhActivity extends AppCompatActivity { } else { getWindow().clearFlags(WindowManager.LayoutParams.FLAG_SECURE); } - if (!Objects.equals(mTheme, getTheme(this))) { - recreate(); - } } @Override diff --git a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java index 2c4e2d209..85d286e31 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/MainActivity.java @@ -45,7 +45,6 @@ import com.google.android.material.navigation.NavigationView; import com.google.android.material.snackbar.Snackbar; import com.hippo.drawerlayout.DrawerLayout; import com.hippo.ehviewer.AppConfig; -import com.hippo.ehviewer.EhApplication; import com.hippo.ehviewer.R; import com.hippo.ehviewer.Settings; import com.hippo.ehviewer.client.EhTagDatabase; @@ -315,7 +314,6 @@ public final class MainActivity extends StageActivity ViewUtils.$$(headerLayout, R.id.night_mode).setOnClickListener(v -> { int theme = (getResources().getConfiguration().uiMode & Configuration.UI_MODE_NIGHT_YES) > 0 ? AppCompatDelegate.MODE_NIGHT_NO : AppCompatDelegate.MODE_NIGHT_YES; AppCompatDelegate.setDefaultNightMode(theme); - ((EhApplication) getApplication()).recreate(); Settings.putTheme(theme); }); if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.Q) diff --git a/app/src/main/java/com/hippo/ehviewer/ui/fragment/EhFragment.java b/app/src/main/java/com/hippo/ehviewer/ui/fragment/EhFragment.java index 7472d56c2..b7d75c07a 100644 --- a/app/src/main/java/com/hippo/ehviewer/ui/fragment/EhFragment.java +++ b/app/src/main/java/com/hippo/ehviewer/ui/fragment/EhFragment.java @@ -63,7 +63,6 @@ public class EhFragment extends BasePreferenceFragment { String key = preference.getKey(); if (Settings.KEY_THEME.equals(key)) { AppCompatDelegate.setDefaultNightMode(Integer.parseInt((String) newValue)); - ((EhApplication) requireActivity().getApplication()).recreate(); return true; } else if (Settings.KEY_GALLERY_SITE.equals(key)) { requireActivity().setResult(Activity.RESULT_OK);