2017-09-13 91 views

回答

0

你必須調用SetContentView

因此,要改變的Activity主題之前,呼籲ActivitysetTheme方法已經打開,您需要重新啓動它。

例如:

public void onCreate(Bundle savedInstanceState) { 
    super.onCreate(savedInstanceState); 
    setTheme(YOUR_THEME_FROM_SHARED_PREFS); 
    setContentView(...) 
} 

case R.id.Invert: 
      // Set theme in shared Prefs here 

      this.recreate(); // restart the activity 
      return true; 
+0

我的意思是在一個按鈕上可以設置兩個主題,1.如果當前主題是白色,將Light設置爲黑色,以及2.如果當前主題黑色按鈕將setTheme設置爲Light?我已經創建了2個按鈕的主題,我只需要一個按鈕,就像'反轉'顏色 –

+0

不需要。你必須像我的答案那樣解釋。您無法更改已打開的活動的主題。 – Kuffs

+0

您可以使用您的按鈕來選擇主題(這就是爲什麼您將它保存到共享首選項),但您仍然需要重新啓動活動以使其生效 – Kuffs

0

是的,當然。定義主題,您要在style文件夾中設置。而不是你的字符串寫代碼R.style.YourOwnTheme

+0

我已經做了一個主題。但是我想通過當前主題改變主題, if(當前主題==光){setTheme(dark); } else if(current theme == dark){ set Theme(light); } 像這樣 –

+0

@WahyuHidayat您可以通過代碼得到主題:。this.getTheme()getResourseId()和比this.getTheme()檢查getResourseId()== R.style.YourTheme – kostyaBoss

+0

奧凱非常感謝我會嘗試 –

相關問題