1

我已经搜索但找不到解决我的问题的方法。我需要做的是设置一个随机主题,然后让所有其他视图都采用这个主题。主题的随机化不是问题,我知道它正在醒来。问题是刷新堆栈中已经存在的视图。

我打电话

int theme = Constants.THEMES[randomInt];
setTheme(theme);

在堆栈中的某个活动中,然后调用invalidate()该活动。该活动没有发生任何事情,但是当我参加其他活动时,新主题将适用。

此外,当我“回到”我的身边时,我mainActivity不知道如何View重新绘制。

我打电话

@Override
protected void onResume() {
    super.onResume();
    if(refreshNeeded){
        getWindow().getDecorView().findViewById(
        android.R.id.content).getRootView().invalidate();
    }
}

但什么也没有。我不知道如何让它用新主题重绘。

我错过了一些明显的东西吗?

4

2 回答 2

0

在和setTheme(R.style.Theme)之前调用。super.onCreatesetContentView

于 2014-12-07T23:33:47.960 回答
0

打电话给Button click

    getApplication().setTheme(R.style.Theme_Black);
    setTheme(R.style.Theme_Black);
    Intent n = new Intent(activityA.this , activityB.class);
    startactivity(n);

它会起作用的。但是您的themes.xmlinvalues文件夹中必须包含所有小部件样式

于 2012-07-20T12:07:06.330 回答