2009-12-01 16 views
11

我目前很難在一個活動中調用getApplicationContext().setTheme(),我只想在應用程序範圍中應用主題資源,而不是代碼樣式中的活動範圍,但麻煩在於,這完全不起作用,可以任何人都可以向此解釋。爲什麼getApplicationContext()。setTheme()在Activity中不起作用?

非常感謝!

他是代碼框架:

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

回答

10

我以前有同樣的問題,並沒有找到一個方法來解決這個問題。只有上帝知道爲什麼,但我甚至見過Android框架工程師(我相信這是Dianne Hackborn)說,設置這樣的主題是不鼓勵的。

改爲在清單中爲您的活動設置主題,它將起作用。

+3

這裏是錯誤報告:http:// code .google.com/p/android/issues/detail?id = 4394 – stealthcopter 2011-03-03 22:09:33

2

當你對你的應用程序上下文調用setTheme()?它必須在實例化任何視圖之前調用。

+0

謝謝你的回答,我在實例化任何viwes之前調用方法,但仍然不起作用。 – user221778 2009-12-01 08:37:26

+0

將setTheme移動到setContentView之前,它對我有用setContentView – OldSchool4664 2016-12-03 01:20:46

-2

我沒有自己嘗試過,但如果絕對有必要以編程方式設置主題,接下來我會嘗試從應用程序派生類並重寫onCreate方法,如下所示:

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

    } 
} 
11

可以使用setTheme(..)調用setContentView(...)super.oncreate()之前,它應該正常工作

+5

我在setContentView之前和super.onCreaete之前調用,但它仍然不起作用。 – 2014-08-26 19:26:08

0

你可以調用setContentView(...)super.oncreate()之前使用setTheme(..),它應該正常工作

它固定在SDK 4.0 (可能更早)。

相關問題