This question already has an answer here:
- Implementing user choice of theme 3 answers
I've created a PreferenceActivity that allows the user to choose the theme he wants to apply to the entire application.
When the user selects a theme, this code is executed:
if (...) {
getApplication().setTheme(R.style.BlackTheme);
} else {
getApplication().setTheme(R.style.LightTheme);
}
But, even though I've checked with the debugger that the code is being executed, I can't see any change in the user interface.
Themes are defined in res/values/styles.xml
, and Eclipse does not show any error.
<resources>
<style name="LightTheme" parent="@android:style/Theme.Light">
</style>
<style name="BlackTheme" parent="@android:style/Theme.Black">
</style>
</resources>
Any idea about what could be happening and how to fix it?
Should I call setTheme
at any special point in the code? My application consists of several Activities if that helps.
Instead of
use
My code: in onCreate() method:
Somewhere (for example, on a button click):
You have to recreate activity, otherwise - change won't happen
i got the same problem but i found the solution.
I would like to see the method too, where you set once for all your activities. But as far I know you have to set in each activity before showing any views.
For reference check this:
http://www.anddev.org/applying_a_theme_to_your_application-t817.html
Edit (copied from that forum):
I had a similar problem and I solved in this way..
this code is for recreate the Activity saving Bundle and changing the theme. You have to write your own onSaveInstanceState(Bundle outState); From API-11 you can use the method recreate() instead
This way work for me:
Then you want to change a new theme:
Call SetContentView(Resource.Layout.Main) after setTheme().