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

相关问题