0

我的問題是如何在維護其父項提供的上下文的同時更新基於其子項的活動。如何處理相關活動之間的導航

請參閱下面的示例層次結構。有一個流量上下。使用應用程序將會如下所示:

在主頁活動中選擇團隊1 - >活動A基於所選內容膨脹。
在活動A上選擇玩家2 - >活動B根據所選內容膨脹。
選擇添加活動B上的統計信息 - >活動C膨脹並允許添加統計信息。

用戶返回到活動B,它們必須保持基於C.
用戶返回到活動A中的播放器2上下文和更新,這必須保持球隊1上下文並且基於B.
用戶返回到主頁更新,必須根據A進行更新。

活動A和B都根據父項選擇進行膨脹,但如果在子活動中進行了更改,則必須更新。 enter image description here

例如,讓我們專注於活動B.它知道給玩家1充氣,因爲這個信息是從活動A傳遞給intent

  1. 如果我要去活動C並按Back,B不會更新。
  2. 如果我要去C並按Up,B會崩潰,因爲它會嘗試創建一個新實例並且不知道膨脹的玩家(在onCreate()中定義)。

我試着用「singleTop」launchMode聲明B,但是它只是重新啓動並且不會根據C的信息進行更新。根據我有限的經驗/研究,我看到以下選項。

  1. 商店的活動的吹氣變量爲靜態的(所以他們不會被「丟失」創建一個新的實例時),在活動的onStart()方法
  2. 啓動我認爲通脹率(通過片段),這樣它會刷新重新啓動時。 (這會幫助嗎?關於我所有的通脹發生在一個fragment內的事實?我最怕的生命週期神。)

我是新來了很多本,並希望得到任何幫助。謝謝!

編輯:我已經嘗試讓「播放器」在活動B中的靜態變量,並讓活動A設置它。這似乎工作。我可以刪除「singleTop」啓動模式,然後從C導航加載B刷新信息的新實例。

但是,這感覺像一個解決方法,我希望有人評論這種方法,也許提供一個替代方案。謝謝。

回答

0

你有沒有考慮過使用分段和你的家庭活動處理所有的事務和backstack參數和調用片段內部方法來更新UI?

如果您確實喜歡使用活動,那麼您應該使用結果的開始活動。您可以將結果傳遞給呼叫活動並進行相應更新。

Getting a Result from an Activity

+0

'startActivityForResult'似乎是一個好方法。我打算使用它。在這種情況下,我只需要使用'onActivityResult()',而不是象我在[其他問題]中所建議的那樣,在'onStart()'上刷新我的UI的一部分。(http://stackoverflow.com/questions/23372201/ can-i-create-my-ui-fragment-in-my-activitys-onstart/23372306#23372306),對嗎? 關於使用片段,我已經編寫了這些不同的活動,但我想知道你的意思和這種方法可以提供什麼優點。你能給出一個指南的摘要或鏈接嗎?感謝您的答案。 – NSouth

+1

從我的經驗來看,使用碎片有很多好處。 http://developer.android.com/guide/components/fragments.html 首先,片段是未來Android的發展方向,API的每次更新都會添加更多的功能來分割,而不會激活非常。所以你不得不早晚使用它。 但是,您瞭解瞭如何使用活動編寫Android應用程序,那麼可能需要一些hello world應用程序來學習片段。當片段開始流行時,我學會了Android,所以我跳入片段。 – uDevel

+0

是的,更新內部onActivityResult()。 – uDevel

相關問題