¿Por qué getApplicationContext (). SetTheme () en una actividad no funciona?
Pregunta
Actualmente tengo dificultades para llamar a getApplicationContext (). setTheme ()
en una actividad, solo quiero aplicar un recurso de tema en un ámbito de aplicación en lugar del ámbito de actividad en estilo de código , pero el problema es que esto no funciona en absoluto, ¿alguien puede explicarlo?
¡Muchas gracias!
Él es el esqueleto del código:
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);
}
}
Solución
Tuve el mismo problema antes y no encontré una manera de solucionarlo. Solo Dios sabe por qué, pero incluso he visto a ingenieros de marcos de Android (creo que fue Dianne Hackborn) decir que se desaconseja configurar temas como este.
Establezca el tema para su Actividad en el Manifiesto en su lugar, y funcionará.
Otros consejos
puede usar setTheme (..)
antes de llamar a setContentView (...)
y super.oncreate ()
y debería funcionar bien
¿Cuándo llamas a setTheme () en el contexto de tu aplicación? Debe llamarse antes de crear instancias de vistas.
puede usar
setTheme (..)
antes de llamar asetContentView (...)
ysuper.oncreate ()
y debería funcionar bien
Se solucionó en SDK 4.0 (puede ser anterior).
No lo intenté yo mismo, pero si fuera absolutamente necesario establecer el tema mediante programación, lo siguiente que intentaría sería derivar una clase de la Aplicación y anular el método onCreate como en el siguiente:
public class MyApplication extends android.app.Application {
@Override
public void onCreate() {
super.onCreate();
setTheme(android.R.style.Theme_Black_NoTitleBar_Fullscreen);
}
}