2009-12-01 9 views
11

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 de ámbito de actividad en el estilo de código, pero el problema es que esto no funciona en absoluto, puede alguien explica esto¿Por qué getApplicationContext(). SetTheme() en una actividad no funciona?

Muchas gracias.!

Él es el esqueleto de 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); 
    } 
} 

Respuesta

10

Tuve el mismo problema antes y no encontré la manera de solucionarlo. Solo Dios sabe por qué, pero incluso he visto a los ingenieros del framework de Android (creo que fue Dianne Hackborn) decir que se desaconseja establecer temas como este.

En su lugar, establezca el tema para su actividad en el Manifiesto, y funcionará.

+3

Aquí está el informe de error: http: // code .google.com/p/android/issues/detail? id = 4394 – stealthcopter

2

Cuando Cómo se llama setTheme() en su contexto de aplicación? Se debe invocar antes de instanciar cualquier punto de vista.

+0

Gracias por su respuesta, llamo al método antes de instanciar cualquier viw, pero todavía no funciona .. – user221778

+0

Me funcionó después de mover setTheme a before setContentView – OldSchool4664

-2

No lo intenté yo mismo, pero si era absolutamente necesario configurar el tema programáticamente, 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); 

    } 
} 
11

puede utilizar setTheme(..) antes de llamar setContentView(...) y super.oncreate() y debería funcionar bien

+5

Llamo antes de setContentView y antes de super.onCreaete pero aún no funciona. –

0

puede utilizar setTheme(..) antes de llamar setContentView(...) y super.oncreate() y debería funcionar bien

él ha fijado en el SDK 4.0 (tal vez mas tarde).

Cuestiones relacionadas