2012-09-04 46 views
3

我正在對我的應用程序實施一項設置,允許用戶切換主題,當用戶切換主題時,用戶將處於設置活動狀態,並且在任務上方將顯示主屏幕。重新啓動任務中的所有活動

我希望當前activity在主題更改後重新啓動,但我也希望主屏幕重新啓動,因此當用戶從設置頁返回時,他會看到主屏幕顯示新的活動。

重新啓動當前的activityis easy,但我該如何強制重新啓動當前的task中的activities

我已經嘗試添加FLAG_ACTIVITY_CLEAR_TOP/FLAG_ACTIVITY_CLEAR_TASKintent,但它會從task刪除這些活動,所以當我從設置回擊,我返回到主屏幕,而不是我的應用程序主界面。

謝謝。

+1

用戶返回時重新啓動主要活動是否可以接受?也許,在'onActivityResult'上? –

+0

這是個不錯的主意......我會嘗試一下。 – marmor

+0

我想你知道,系統使用onConfigurationChange來達到這個目的。如果系統語言將被改變 - 你的活動將被重新創建,onConfigurationChange()將被調用,如果你聲明你可以處理這種情況。 我認爲你的情況你應該嘗試做同樣的事情,但是,我不知道如何觸發COnfigurationChange由於你的內部應用程序設置。如果可以在應用程序內部這樣做 - 我認爲這將是一個完美的解決方案。 – AlexN

回答

2

一種可能的方式是,當用戶返回到它重新啓動的主要活動。如果您使用startActivityForResult打開您的首選項活動,那麼在完成該活動時,可以使用setResult來告知主要活動是否需要重新啓動。最後,在主要活動的onActivityResult中,您可以查看傳遞的結果並在必要時重新開始主要活動。

+0

真是個好主意! :) – marmor

2

也許你可以檢查是否有任何配置更改onRestart方法,所以當你按回時,這個方法應該被觸發。

+0

這似乎是工作,但我擔心我的isThemeChanged方法有點沉重,所以我不想在每個onRestart上調用它。無論如何,這絕對是一個正確的答案,但我在接受這個方案之前正在尋找其他方法。 – marmor