3

我在我的應用程序上實現了兩個簡單的主題,您可以在SettingsActivityextending PreferenceActivity)中選擇它們。在哪裏重新創建活動?

此時,當您更改主題時,它僅應用於新創建的活動,因爲您從中調用設置的活動是活動堆棧中的舊活動。

我搜索了很多,我發現這非常有用:how to restart an activity

順便說一下,我不完全清楚在哪裏把這個代碼。實現它的唯一方法是把它放在onRestart()方法中,

但這是一個巨大的CPU浪費,電池和用戶體驗。

任何幫助?

+0

究竟是什麼問題? – Kuffs 2012-07-30 13:32:27

+0

我需要將新選定的主題應用於所有活動。爲了實現這一點,我需要重新創建舊的。我怎樣才能做到這一點? – Enrichman 2012-07-30 13:35:09

+0

如果主題更改以便可以重新創建所有活動,則強制用戶回到應用程序的開始位置。 – Kuffs 2012-07-30 13:36:15

回答

1

在主題首選項上設置PreferenceChangedListener。如果它被觸發,請將您的用戶清除迴應用程序的頂層。你可以重新開始當前的活動,但如果你有很多活動很深,那麼這會變得有點痛苦。更容易重置應用程序回到開始。

 Intent i = new Intent(this, MainActivity.class); 
     i.setFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP); 
     this.finish(); 
     this.startActivity(i); 
+0

我終於管理如何做到這一點,謝謝。 – Enrichman 2012-07-30 20:44:20

1

我會爲onPreferenceChanged註冊一個監聽器。在那裏你可以檢查你的主題偏好是否被改變。然後,您可以使用以下代碼重新啓動活動。

Intent intent = getIntent(); 
finish(); 
startActivity(intent); 

通過使用getIntent()獲取意圖,請確保您的Activity將以完全相同的方式啓動。