Mudando o tema de todo o aplicativo por meio de programação?

Estou tentando obter um tema escolhido pelo usuário e sinto que estou frustrantemente próximo. Definindo o tema emAndroidManifest.xml funciona como deveria, mas (como posso dizer) não pode mudar com base nas preferências do aplicativo:

<application 
    android:theme="@style/theme_sunshine" 
    android:icon="@drawable/icon" 
    android:label="@string/app_name">

Como alternativa, configurá-lo dinamicamente em cada atividade também funciona:

someChosenTheme = PreferenceManager.getDefaultSharedPreferences(this).getString("themePreference", "theme_twilight");
setTheme(someOtherChosenTheme);

Mas isso parece confuso, e eu prefiro definir o tema para o aplicativo inteiro em um só lugar. Meu primeiro pensamento foi pegar o contexto do aplicativo assim que minha atividade principal for iniciada e fazê-lo lá:

getApplicationContext().setTheme(R.style.theme_dummy);

O melhor que posso dizer,esta deve fazer o truque, mas na verdade não está fazendo nada - o aplicativo inteiro tem o estilo padrão do Android. O que foi dito acima é válido? Se sim, posso estar fazendo outra coisa idiota?

Estou trabalhando no nível 3 da API, se isso importa. Prods na direção certa muito apreciada!

Pergunta relacionada.

questionAnswers(2)

yourAnswerToTheQuestion