如何在运行时将主题设置为活动?它在onCreate和setContentView之前调用setTheme不起作用

her*_*ain 19 android themes

我想setTheme在运行时进行活动,我已经通过谷歌搜索了一些解决方案.有人说setTheme在onCreate和setContentView之前调用可以工作,代码部分就好

public void onCreate(Bundle savedInstanceState) {
    setTheme(android.R.style.Theme_Translucent_NoTitleBar);
    super.onCreate(savedInstanceState);
    ...
    setContentView(...)
}
Run Code Online (Sandbox Code Playgroud)

但它不起作用,我想知道,还有另一种解决方案可以将主题设置为活动吗?

Pra*_*mar 18

试试这个 - super.onCreate(savedInstanceState);之前和之后设置你的主题setContentView(...)

如下代码 -

public void onCreate(Bundle savedInstanceState) 
{
    super.onCreate(savedInstanceState);
    setTheme(android.R.style.Theme_Translucent_NoTitleBar); // Set here
    setContentView(...)
}
Run Code Online (Sandbox Code Playgroud)

  • 我尝试了这个,但它显示了黑色背景,你能帮助我吗? (4认同)

Chr*_*ins 7

实际上,如果我在打电话之前设置它,这对我有用 super.onCreate(savedInstanceState);

public void onCreate(Bundle savedInstanceState)
{
    final int themeRes = getIntent().getIntExtra(EXTRA_THEME_ID, 0);
    if (themeRes != 0) setTheme(themeRes);
    super.onCreate(savedInstanceState);
    //ect...
}
Run Code Online (Sandbox Code Playgroud)