我已經搜索,但無法找到解決我的問題。 我需要做的是設置一個隨機主題,然後讓所有其他視圖採用這個主題。這個主題的隨機化不是問題,我知道它是在開玩笑。問題是刷新已經在堆棧中的視圖。在運行時更改主題,需要查看重畫,但它不
我在堆棧的某處調用
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();
}
}
,但沒有。我無法弄清楚如何讓它重新繪製新的主題。
我錯過了一些明顯的東西嗎?在Button click
getApplication().setTheme(R.style.Theme_Black);
setTheme(R.style.Theme_Black);
Intent n = new Intent(activityA.this , activityB.class);
startactivity(n);
我提到新的主題正在應用於新的活動。我遇到的問題是將其應用於當前視圖和堆棧中的其他視圖(如在用戶按下後退按鈕時)。 'getApplication()。setTheme(theme);'不會改變什麼嗎? – 2012-07-20 13:15:31
此刻我唯一的選擇似乎是: '如果(refreshNeeded){'' i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);'' 意向書I = getIntent();'' startActivity(I);' '}' 不是最好的解決方案。 – 2012-07-20 15:44:28