Por getApplicationContext (). SetTheme () em uma atividade não funciona?
Pergunta
Atualmente, estou ter um tempo difícil para chamar a getApplicationContext().setTheme()
em uma atividade, eu só quero aplicar um recurso do tema em um âmbito de aplicação, em vez de âmbito atividade no estilo do código, mas o problema é que isso não funciona de todo, alguém pode explicar a esta.
Muito obrigado.!
Ele é o 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);
}
}
Solução
Eu tive o mesmo problema antes e não encontrar uma maneira de corrigir isso. Só Deus sabe por que, mas eu mesmo vi engenheiros estruturais Android (creio que foi Dianne Hackborn) dizer que os temas ambiente como este é desencorajado.
Definir o tema para a sua atividade no manifesto em vez disso, e ele vai funcionar.
Outras dicas
Você pode usar setTheme(..)
antes de chamar setContentView(...)
and super.oncreate()
e ele deve funcionar bem
Quando você chama setTheme () em seu contexto de aplicação? Ele deve ser chamado antes de instanciar quaisquer pontos de vista.
Você pode usar
setTheme(..)
antes de chamarsetContentView(...)
esuper.oncreate()
e ele deve funcionar bem
É fixado no SDK 4.0 (pode ser mais cedo).
Eu não tentar fazer isso sozinho, mas se fosse absolutamente necessário para definir o tema através de programação, a próxima coisa que eu tentaria seria derivar uma classe de Aplicação e substituir o método onCreate como no seguinte:
public class MyApplication extends android.app.Application {
@Override
public void onCreate() {
super.onCreate();
setTheme(android.R.style.Theme_Black_NoTitleBar_Fullscreen);
}
}