2012-07-20 1 views
0

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?

Répondre

0

Appelez ce à Button click

getApplication().setTheme(R.style.Theme_Black); 
    setTheme(R.style.Theme_Black); 
    Intent n = new Intent(activityA.this , activityB.class); 
    startactivity(n); 

Il fonctionnera. Mais vous devez avoir tous les styles de widget dans votre themes.xml dans values dossier

+0

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? –

+0

À 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. –

0

Appel setTheme(R.style.Theme) avant super.onCreate et setContentView.

Questions connexes