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
How to Implement Day/Night Mode in Your Android App 1 Find out the easiest way to do it yourself. Since Android Pie (9.0) introduced the dark/light (day/night) theme to its users, a lot of the most popular apps have welcomed ... 2 Now, let’s start. ... 3 Moving on to some coding. ... 4 Checking the current system theme. ... 5 More control? ...
The DayNight functionality in AppCompat allows your app to easily switch between a dark ⚫ and light ⚪ theme. This has many benefits for your users, from saving power on OLED displays, to increasing usability for people with reduced-vision, and more.
Have a theme with the same name in each file (e.g., AppTheme ), but tailor the theme based upon whatever differences you want have between day and night modes.
To declare that your activity handles a configuration change, edit the appropriate <activity> element in your manifest file to include the android:configChanges attribute with a value that represents the configuration you want to handle. Possible values are listed in the documentation for the android:configChanges attribute.
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.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With