2015-05-15 151 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