2012-06-21 18 views
9

Voglio setTheme in un'attività in fase di esecuzione, ho cercato alcune soluzioni su google. qualcuno ha detto chiamata setTheme prima dell'inizio dei lavori OnCreate e può setContentView, la sezione di codice comeCome impostare Theme su un'attività in fase di esecuzione? Non funziona call setTheme prima onCreate e setContentView

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

ma non funziona, voglio sapere, c'è un'altra soluzione può setTheme di attività?

+1

Basta provare questo - impostare il tema dopo il 'super.onCreate (savedInstanceState);' 'e prima setContentView (...)' – Praveenkumar

+0

@hermanbrain: chiamare sempre 'super .onCreate (...) 'prima nel metodo' onCreate (...) 'a meno che tu non intenda modificare il' Bundle' che passi ad esso. Come dice SpK, chiama 'setTheme (...)' dopo aver chiamato 'super.onCreate (...)'. – Squonk

+0

Lo stesso problema, ho persino provato a posizionarlo come praveen, ma senza successo. Ho creato un tema personalizzato in style.xml e aggiunto la riga setTheme (R.style.MyCustomTheme); devo fare qualcos'altro? –

risposta

11

Basta provare questo - impostare il tema dopo super.onCreate(savedInstanceState); e prima setContentView(...)

come sottostante Codice -

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

ho provato questo, ma mostra lo sfondo nero, puoi aiutarmi. – mdDroid

4

In realtà questo ha funzionato solo per me, se ho impostato prima di chiamare 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(...); 

Deve funzionare bene ..

Altro su Temi, leggete questo http://entertheinfinity.blogspot.in/2016/06/designing-android-interface-themes.html

+0

Spiega perché il tuo codice risolve il problema dell'OP. –

+0

Uso questa tecnica per modificare il tema nell'Attività di avvio dell'app. È perché in onCreate non c'è una vista (cioè nessuna barra di azione caricata o nessuna vista in attività) in cui è possibile impostare il tema. Impostare il tema prima di setContentView() è come impostare un tema su Vista nullo. My Analogy. Dipende sempre da te. Grazie – Umesh

Problemi correlati