如何处理依赖活动之间的导航

时间:2014-04-28 17:13:56

标签: android android-fragments android-activity android-lifecycle android-navigation

我的问题是如何在维护其父级提供的上下文的同时更新基于其子级的活动。

请参阅下面的示例层次结构。有一个上下流动。使用该应用程序会是这样的:

在主页活动中选择第1组 - >活动A根据选择进行膨胀 在活动A上选择播放器2 - >活动B根据选择进行膨胀 选择在活动B上添加统计信息 - >活动C膨胀并允许添加统计数据。

用户返回活动B,活动B必须维护播放器2的上下文并根据C进行更新 用户返回活动A,活动A必须维护Team 1上下文并根据B进行更新 用户返回Home,必须根据A进行更新。

活动A和B都根据父选择而膨胀,但如果在子活动中进行了更改,则必须更新。 enter image description here

例如,让我们关注活动B.它知道为玩家1充气,因为此信息是从intent中的活动A传递的。

  1. 如果我要去活动C并按Back,B就不会更新。
  2. 如果我要去C并按Up,B会崩溃,因为它会尝试创建一个新实例,并且不知道要膨胀的玩家(在onCreate()中定义)。
  3. 我尝试使用“singleTop”launchMode声明B,但之后它只是重新启动并且不会根据C的信息进行更新。根据我有限的经验/研究,我看到以下选项。

    1. 将Activity的inflater变量存储为静态(因此在创建新实例时不会“丢失”)
    2. 在Activity的onStart()方法中启动我的视图通胀(通过Fragment),以便在重新启动时刷新。 (这会有帮助吗?我的所有通货膨胀都发生在fragment内的事实怎么样?我担心生命周期的神。)
    3. 我是很多人的新手,非常感谢任何帮助。谢谢!

      编辑:我试过让“播放器”成为活动B中的静态变量并让活动A设置它。这似乎有效。我可以删除“singleTop”启动模式,然后从C导航 up 加载一个新的B实例并刷新信息。

      然而,这个感觉就像一个解决方法,我希望有人对这种方法发表评论,并且可能会提供替代方案。感谢。

1 个答案:

答案 0 :(得分:0)

你是否考虑过使用片段和你的家庭活动来处理带有参数的所有事务和backstack,并调用片段内部方法来更新UI?

如果您真的想使用活动,那么您应该使用开始活动来获得结果。您可以将结果传递给calling-activity并相应地更新。

Getting a Result from an Activity