Warum funktioniert getApplicationContext().setTheme() in einer Aktivität nicht?
Frage
Es fällt mir derzeit schwer, anzurufen getApplicationContext().setTheme()
In einer Aktivität möchte ich nur eine Themenressource in einem Anwendungsbereich anstelle eines Aktivitätsbereichs im Codestil anwenden, aber das Problem ist, dass das überhaupt nicht funktioniert. Kann mir das jemand erklären?
Vielen Dank.!
Er ist das Code-Skelett:
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);
}
}
Lösung
Ich hatte das gleiche Problem vor und fand keinen Weg, dies zu beheben. Nur Gott weiß, warum, aber ich habe auch Android Framework Ingenieure (ich glaube, es war Dianne Hackborn) sagen, dass Einstellung Themen wie entmutigen zu sehen ist.
Stellen Sie das Thema für Ihre Aktivität im Manifest statt, und es wird funktionieren.
Andere Tipps
Sie können setTheme(..)
vor dem Aufruf setContentView(...)
and super.oncreate()
verwenden und es sollte funktionieren
Wenn nennst du setTheme () auf Ihrem Anwendungskontext? Es muss vor der Instanziierung alle Ansichten aufgerufen werden.
Sie
setTheme(..)
vor dem AufrufsetContentView(...)
verwenden können undsuper.oncreate()
und es sollte funktionieren
Es ist festgelegt in sdk 4.0 (früher eintreten kann).
Ich habe das nicht selbst ausprobiert, aber wenn es unbedingt notwendig wäre, das Thema programmgesteuert festzulegen, würde ich als Nächstes versuchen, eine Klasse von Application abzuleiten und die onCreate-Methode wie folgt zu überschreiben:
public class MyApplication extends android.app.Application {
@Override
public void onCreate() {
super.onCreate();
setTheme(android.R.style.Theme_Black_NoTitleBar_Fullscreen);
}
}