2015-05-15 149 views
1

我有一種情況,我有3個活動。將活動結果傳遞給祖父母活動(非父母)

  1. ResultsActivity
  2. SimpleSearchActivity
  3. ComplexSearchActivity

的流程如下:用戶可以選擇從哪個將推出SimpleSearchActivity的ResultsActivity搜索。從那裏用戶可以執行簡單的搜索。結果將傳遞給「結果」活動。

但是從SimpleSearchActivity用戶可以選擇做一個複雜的搜索,這將完成SimpleSearchActivity並啓動ComplexSearchActivity。從那裏我想將結果傳回給ResultsActivity。我不知道該怎麼做,因爲這第三項活動並非從第一項活動中啓動,而是第二項活動。

選項我已考慮:

  1. 在複雜的搜索情況下回到ResultsActivity並從那裏啓動ComplexSearchActivity。不知道我真的想要這樣做,因爲我不想讓SimpleSearch關閉返回到結果,然後立即啓動複雜。我擔心這會在啓動ComplexSearchActivity之前'閃現'ResultsActivity。

  2. 在複雜的搜索情況下,SimpleSearch啓動ComplexSearch和startActivityForResult(...),在複雜的結束時,簡單的搜索可以獲取結果,然後將結果傳遞迴結果活動。我不確定這個鏈接會起作用。即使這樣做,我擔心在複雜的結束時,SimpleSearchActivity會'閃現',只是爲了傳遞結果。

  3. 將搜索結果存儲在某個地方的靜態變量中,並在ResultsActivity啓動時檢查可能已由任一搜索活動設置的靜態變量。呸!

  4. 我也想到了只有一個搜索活動和做某些領域(簡單VS複雜)顯示/隱藏。但是,我將簡單搜索作爲對話活動(在平板電腦中)和複雜搜索作爲全屏活動進行。所以我不能真正使用相同的搜索活動。

想法?有沒有人嘗試過這樣的事情?

+1

這可能是http://stackoverflow.com/questions/19772284/android-can-you-get-an-activity-result-from-a-chained-startactivityforresult?rq=1的重複。是showC.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); 的答案? – lostintranslation

回答

2

有幾個方法可以做到這一點:

選項1:您可以選擇關閉SimpleSearchActivity當您啓動ComplexSearchActivity。取而代之的是,ComplexSearchActivity將結果發送回SimpleSearchActivity,從那裏有SimpleSearchActivity將結果傳遞給ResultsActivity

更新:至少在我的經驗中,這將沒有UI「flash」;它應該顯得無縫。

選項2:使用FLAG_ACTIVITY_FORWARD_RESULT,它正是爲此目的而存在的。

+0

您的選項1是我的選項2.這將導致SimpleSearchActivity在ComplexSearch完成後「閃爍」回屏幕一秒嗎?選項2可能是最好的答案! – lostintranslation

+0

@lostintranslation查看更新後的答案。我已經多次使用這種方法,並且從未見過任何UI閃爍或閃爍。 – pathfinderelite

+0

你不能更正確,謝謝你的幫助! '使用FLAG_ACTIVITY_FORWARD_RESULT,完全是爲了這個目的'。 – lostintranslation

-1

您是否想過抽象的數據層在所有活動中共享,而不是隻有某些活動才能保存數據?

+0

下,這並不回答OP的問題。澄清請求應作爲評論發佈。 – pathfinderelite