2012-06-21 6 views
9

Quiero setTheme a una actividad en tiempo de ejecución, he buscado algunas soluciones por google. alguien dijo antes llamada setTheme obras alcrear y setContentView pueden, al igual que la sección de código¿Cómo configurar el tema para una actividad en tiempo de ejecución? No funciona call setTheme before onCreate y setContentView

public void onCreate(Bundle savedInstanceState) { 
    setTheme(android.R.style.Theme_Translucent_NoTitleBar); 
    super.onCreate(savedInstanceState); 
    ... 
    setContentView(...) 
} 

pero no funciona, me gustaría saber, ¿hay otra solución puede setTheme a la actividad?

+1

Intenta esto - para que el tema después de 'super.onCreate (savedInstanceState);' 'setContentView y antes de (...)' – Praveenkumar

+0

@hermanbrain: Siempre llaman 'súper .onCree (...) 'primero en su método' onCreate (...) 'a menos que tenga la intención de modificar el' Bundle' que le pasa. Como dice SpK, llama a 'setTheme (...)' después de llamar a 'super.onCreate (...)'. – Squonk

+0

El mismo problema, incluso intenté colocarlo como dijo Praveen pero no tuve éxito. Hice un tema personalizado en style.xml y agregué la línea setTheme (R.style.MyCustomTheme); ¿Necesito hacer algo más? –

Respuesta

11

Intenta esto - establecer el tema después de super.onCreate(savedInstanceState); y antes setContentView(...)

Como continuación de código -

public void onCreate(Bundle savedInstanceState) 
{ 
    super.onCreate(savedInstanceState); 
    setTheme(android.R.style.Theme_Translucent_NoTitleBar); // Set here 
    setContentView(...) 
} 
+2

intenté esto, pero muestra el fondo negro, ¿me puedes ayudar? – mdDroid

4

En realidad esto sólo funcionó para mí si fijo antes de llamar super.onCreate(savedInstanceState);

public void onCreate(Bundle savedInstanceState) 
{ 
    final int themeRes = getIntent().getIntExtra(EXTRA_THEME_ID, 0); 
    if (themeRes != 0) setTheme(themeRes); 
    super.onCreate(savedInstanceState); 
    //ect... 
} 
2
setContentView(...); 
setTheme(R.style.MyTheme); 
setContentView(...); 

Debe funcionar bien ..

Más sobre Temas, lea este http://entertheinfinity.blogspot.in/2016/06/designing-android-interface-themes.html

+0

Explique por qué su código resuelve el problema de OP. –

+0

Utilizo esta técnica para cambiar el tema en la Actividad de inicio de la aplicación. Es porque en onCreate no hay vista (es decir, ninguna barra de acción cargada ni ninguna vista en actividad) en la que se pueda establecer el tema. Configurar el tema antes de setContentView() es como Configurar un tema para null Ver. Mi analogía. Siempre depende de ti decidir. Gracias – Umesh

Cuestiones relacionadas