Warum funktioniert getApplicationContext().setTheme() in einer Aktivität nicht?

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

  •  22-07-2019
  •  | 
  •  

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);
    }
}
War es hilfreich?

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 Aufruf setContentView(...) verwenden können und   super.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);

    }
}
Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top