So I’ve got an activity in my app that is currently marked as
android:launchMode="singleTop"
…and I currently have logic in both onCreate and onNewIntent to make sure that the screen is always showing the data delivered by the newest Intent that launched. And I’d like to be able to change between Holo.Light and Holo.Dark based on the data delivered by that Intent.
Calling setTheme doesn’t work (see these two links):
- Why getApplicationContext().setTheme() in a Activity does not work?
- http://code.google.com/p/android/issues/detail?id=4394
That second link has a workaround that involves creating a second AndroidManifest.xml entry that has the other theme and points to an empty subclass of the activity in question. This works, but it breaks singleTop (since there can now be two instances of the activity on the stack).
I’m out of ideas. Anybody know if there’s any way to do this aside from rolling my own custom ActionBar view for this activity?
You need to set the theme using the setTheme() method, but then to reload the activity.
I have a singleTask activity, and a code that runs on API<11, so I have this code to reload the activity:
I’m pretty much just finishing the activity and calling it again. I disable any transition animation to make the reloading look instant.