I thought it would be better to allow user change theme, and after that just restart activity. As you said "
> setTheme() should be called in onCreate()

so restart is needed and IMO, it's better in user experience style.