I'm trying to set the theme of my Activity during runtime, choosing one of a number of themes. I want the chosen theme to display immediately on startup of the Activity.
In the <application>
part of my manifest I have set a default theme with android:theme="@style/AppTheme"
. And then in my onCreate()
I use setTheme(R.style.DarkAppTheme)
to set the theme to a user-selected theme (replacing DarkAppTheme
with the selected theme).
And based on research it seems that setTheme()
should go before onCreate()
and before setContentView()
, which I do.
BUT although this works to display the Activity in the user selected theme, the Activity first loads with what looks like the default theme, and then after a short delay the correct theme loads.
If I set the user selected theme directly in the manifest, that loads immediately as I want, but of course that is hardcoded and I want to change this dynamically based on a shared preference.
How do I avoid the visible changeover? I want the user selected theme to be displayed right from the start.
Thanks.