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!