2017-09-13 2 views

Répondre

0

Vous devez appeler la méthode setTheme sur la Activity avant d'appeler SetContentView

Par conséquent, pour changer le thème d'un Activity c'est déjà ouvert, vous devrez le redémarrer.

Par exemple:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setTheme(YOUR_THEME_FROM_SHARED_PREFS); 
    setContentView(...) 
} 

et

case R.id.Invert: 
      // Set theme in shared Prefs here 

      this.recreate(); // restart the activity 
      return true; 
+0

je veux dire sur un bouton peut définir deux thèmes, 1. pour définir la lumière au noir si le thème actuel est blanc, et 2. si le thème actuel noir le bouton va régler Thème à la lumière ?? J'ai créer un thème sur 2 bouton, je veux juste dans un bouton, comme «Inverser» les couleurs –

+0

Non. Vous devez le faire comme ma réponse explique. Vous ne pouvez pas modifier le thème d'une activité déjà ouverte. – Kuffs

+0

Vous pouvez utiliser votre bouton pour choisir le thème (c'est pourquoi vous l'enregistrez dans les préférences partagées) mais vous devrez quand même redémarrer l'activité pour qu'elle prenne effet – Kuffs

0

Oui, bien sûr. Définir le thème, vous souhaitez définir dans le dossier style. Et au lieu de votre chaîne écrivez le code R.style.YourOwnTheme

+0

J'ai déjà fait un thème. mais je veux changer de thème par thème courant, si (thème actuel == Lumière) { setTheme (dark); } sinon if (thème actuel == sombre) { jeu Thème (lumière); } Comme cela –

+0

@WahyuHidayat vous pouvez obtenir le thème par le code: this.getTheme(). GetResourseId() Et que le vérifier par this.getTheme(). GetResourseId() == R.style.YourTheme – kostyaBoss

+0

oke merci beaucoup je vais essayer –