2009-12-01 13 views
11

Şu anda bir aktivitede getApplicationContext().setTheme() aramak için zor bir zaman var, ben sadece bir tema kaynağı kod alanında etkinlik kapsamı yerine bir uygulama kapsamı uygulamak istiyorum, ama sorun şu ki, bu hiç çalışmıyor Bunu herkes anlatabilir.Neden getApplicationContext() setTheme() bir aktivitede çalışmıyor?

Çok teşekkürler.

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

cevap

10

Daha önce aynı sorunu yaşadım ve bunu düzeltmenin bir yolunu bulamadım. Sadece tanrı nedenini biliyor, ama Android framework mühendislerini bile gördüm (Dianne Hackborn olduğuna inanıyorum), temaların bu şekilde ayarlanmasının cesaret kırıldığını söylüyor.

Etkinliğinizin temasını Manifest yerine ayarlayın ve işe yarayacaktır.

+3

İşte hata raporu: http: // code .google.com/p/android/issues/detail? id = 4394 – stealthcopter

2

Eğer uygulama bağlamına setTheme() diyorsunuz:

kod durumunda iskelet? Herhangi bir görünüm oluşturmadan önce çağrılmalıdır.

+0

Cevabınız için teşekkür ederiz, herhangi bir vidayı başlatmadan önce yöntemi çağırıyorum, ancak yine de çalışmıyor .. – user221778

+0

SetTheme değerini taşıdıktan sonra benim için çalıştı setContentView – OldSchool4664

-2

Bunu kendim denemedim, ancak temayı programlı olarak ayarlamak kesinlikle gerekliyse, denediğim bir sonraki şey, Uygulama'dan bir sınıf türetmek ve onCreate yöntemini aşağıdaki gibi geçersiz kılmak olurdu:

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

    } 
} 
11

Eğer setContentView(...) ve super.oncreate() çağırmadan önce setTheme(..) kullanabilir ve ince

+5

SetContentView'den önce ve super.onCreaete'den önce çağrı yapıyorum ama yine de çalışmıyor. –

0

Eğer setContentView(...) ve super.oncreate() çağırmadan önce setTheme(..) kullanabilirsiniz çalışmalıdır ve ince

Bu sdk 4.0 onarıldı çalışması gerekir (belki daha erken).

İlgili konular