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);
    }
}
Foi útil?

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 chamar setContentView(...) e super.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);

    }
}
Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top