J'ai cherché mais ne peux pas trouver une solution à mon problème. Ce que je dois faire est de définir un thème aléatoire, puis toutes les autres vues adoptent ce thème. La randomisation du thème n'est pas le problème, je sais que c'est woking. Quel est le problème rafraîchit les vues déjà dans la pile.Changement de thème au moment de l'exécution, besoin d'affichage pour redessiner mais pas
J'appelle
int theme = Constants.THEMES[randomInt];
setTheme(theme);
une activité quelque part dans la pile, puis appeler invalidate()
sur cette activité. Rien ne se passe dans cette activité mais quand je vais à d'autres activités, le nouveau thème s'applique.
Aussi quand je vais «retour» à mon mainActivity
je ne peux pas comprendre comment obtenir le View
à redessiner.
J'appelle
@Override
protected void onResume() {
super.onResume();
if(refreshNeeded){
getWindow().getDecorView().findViewById(
android.R.id.content).getRootView().invalidate();
}
}
mais rien de nouveau. Je n'arrive pas à comprendre comment l'obtenir pour redessiner avec le nouveau thème.
Est-ce que quelque chose me manque?
J'ai mentionné que le nouveau thème est appliqué à de nouvelles activités. Le problème que j'ai est de l'appliquer à la vue actuelle et à d'autres vues de la pile (comme lorsque l'utilisateur appuie sur le bouton de retour). 'getApplication(). setTheme (theme);' ne change rien? –
À l'heure actuelle ma seule option semble être: 'si (refreshNeeded) {' ' i.addFlags (Intent.FLAG_ACTIVITY_CLEAR_TOP),' ' intention i = getIntent()' ' startActivity (i);' '}' pas la meilleure solution. –