Почему 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);
}
}