Android DayNight Theme with configChanges

Viewed 2510

I'm creating an app where I use the theme DayNight of the Android support libraries.

This is the code in themes.xml

<style name="ActivityTheme" parent="Theme.AppCompat.DayNight.NoActionBar">
    <item name="colorPrimary">@color/colorPrimary</item>
    <item name="colorPrimaryDark">@color/colorPrimaryDark</item>
    <item name="colorAccent">@color/colorAccent</item>
</style>

I use configChanges in the manifest to manage rotations.

android:configChanges="keyboardHidden|orientation|screenSize"

In the onCreate on my AppcompatActivity I have added:

AppCompatDelegate.setDefaultNightMode(AppCompatDelegate.MODE_NIGHT_YES)

The problem is that when I use setDefaultNightMode, android:configChanges stops working, and recreate de activity in every rotation.

Any kind of help will be welcome

4 Answers

Seems to be a bug and will be fixed in AppCompat v.1.1.0 according to this issue.

Until its fixed I would add the uiMode flag to android:configChanges like mentioned here

Probably you need to add 'uiMode' parameter to your manifest:

android:configChanges="orientation|screenSize|uiMode|keyboardHidden"

This issue has been fixed with AppCompat v1.1.0-alpha05.

See here: https://developer.android.com/preview/features/darktheme#changing_themes_in-app

Note: Starting with AppCompat v1.1.0-alpha05, setDefaultNightMode() does not automatically recreate any started activities.

Update your appcompat dependency to the latest version, currently 1.1.0-rc01.

implementation 'androidx.appcompat:appcompat:1.1.0-rc01'

Don't forget to remove the uiMode flag from android:configChanges in your manifest if you added it.

Related