Почему getApplicationContext (). SetTheme () в Activity не работает? - PullRequest
12 голосов
/ 01 декабря 2009

В настоящее время мне трудно звонить по 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);
    }
}

Ответы [ 5 ]

12 голосов
/ 13 октября 2011

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

11 голосов
/ 01 декабря 2009

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

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

2 голосов
/ 01 декабря 2009

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

0 голосов
/ 27 марта 2012

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

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

0 голосов
/ 01 декабря 2009

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

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

    }
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...