Pourquoi getApplicationContext (). SetTheme () dans une activité ne fonctionne pas?

StackOverflow https://stackoverflow.com/questions/1823724

  •  22-07-2019
  •  | 
  •  

Question

J'ai actuellement du mal à appeler getApplicationContext (). setTheme () dans une activité, je souhaite simplement appliquer une ressource de thème dans une portée d'application plutôt que dans le style de code. , mais le problème est que cela ne fonctionne pas du tout, est-ce que quelqu'un peut expliquer cela?

Merci beaucoup.!

Il est le squelette de code:

public class StartUp extends Activity {
@Override
public void onCreate(Bundle savedInstanceState) {
    /*
     * setTheme(android.R.style.Theme_Black_NoTitleBar_Fullscreen);
     * //that works!
     */
       this.getApplicationContext().setTheme(
            android.R.style.Theme_Black_NoTitleBar_Fullscreen);
       super.onCreate(savedInstanceState);
       setContentView(R.layout.main);
    }
}
Était-ce utile?

La solution

J'ai eu le même problème avant et je n'ai pas trouvé le moyen de résoudre ce problème. Dieu seul sait pourquoi, mais j’ai même vu des ingénieurs de framework Android (je crois que c’était Dianne Hackborn) affirmer qu’il était déconseillé de définir des thèmes comme celui-ci.

Définissez le thème de votre activité dans le manifeste à la place, et cela fonctionnera.

Autres conseils

vous pouvez utiliser setTheme (..) avant d'appeler setContentView (...) et super.oncreate () et cela devrait fonctionner bien

Quand appelez-vous setTheme () dans le contexte de votre application? Il doit être appelé avant d'instancier une vue.

  

vous pouvez utiliser setTheme (..) avant d'appeler setContentView (...) et    super.oncreate () et cela devrait fonctionner correctement

Cela a été corrigé dans SDK 4.0 (peut-être plus tôt).

Je n’ai pas essayé cela moi-même, mais s’il était absolument nécessaire de définir le thème par programmation, la tâche suivante consisterait à dériver une classe de Application et à remplacer la méthode onCreate comme suit:

public class MyApplication extends android.app.Application {
    @Override
    public void onCreate() {
        super.onCreate();
        setTheme(android.R.style.Theme_Black_NoTitleBar_Fullscreen);

    }
}
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top