Почему getApplicationContext(). SetTheme() в Activity не работает?

В настоящее время мне трудно называть getApplicationContext().setTheme() в действии, я просто хочу применить тематический ресурс в области приложения вместо области действия в стиле кода, но проблема в том, что это не работает при все, может кто-нибудь объяснить это.

Большое спасибо.!

Он является скелетом кода:

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);
    }
}

Ответ 1

У меня была такая же проблема раньше, и я не нашел способа исправить это. Только бог знает, почему, но я даже видел разработчиков фреймворков Android (я считаю, это была Dianne Hackborn), что установка тем, подобных этому, не рекомендуется.

Задайте тему своей деятельности в манифесте вместо этого, и она будет работать.

Ответ 2

вы можете использовать setTheme(..) перед вызовом setContentView(...) и super.oncreate(), и он должен работать нормально

Ответ 3

Когда вы вызываете setTheme() в контексте вашего приложения? Он должен быть вызван до создания экземпляров любых представлений.

Ответ 4

вы можете использовать setTheme(..) перед вызовом setContentView(...) и super.oncreate() и он должен работать нормально

Исправлено в sdk 4.0 (может быть раньше).

Ответ 5

Я сам не пробовал это, но если было абсолютно необходимо задать тему программно, следующая вещь, которую я попробовал бы, - это получить класс из приложения и переопределить метод onCreate, как в следующем:

public class MyApplication extends android.app.Application {
    @Override
    public void onCreate() {
        super.onCreate();
        setTheme(android.R.style.Theme_Black_NoTitleBar_Fullscreen);

    }
}