2016-07-07 195 views
1

我有三个活动,分别称为A,B和C. A是B和C的父活动。以下是所有可能的活动流程。活动A-> B-> C-> A。如何获得B的数据onActivityResult A

  1. A - >乙 - >按背部或上按钮在操作栏 - > A.
  2. A - >Ç - >按背部或上按钮在操作栏 - > A.
  3. A - >乙 - “ç - >按后面 - > B.
  4. A - >乙 - ”ç - >向上按在操作栏按钮 - > A.

B和C可以修改所存储的数据所以我让B和C通过意图将修改后的数据发送回A,并使用A的onActivityResult来更新这些数据。

问题出在流程4,如果B修改了一些数据,我该如何将这些修改发送回A?我是否应该将它们传递给C并使C将它们发回给A而C绝对不需要这些数据?

更新

我发现,在流动4.活动A的onActivityResult没有收到返回的Intent,在Intent参数总是null,所以我们不能从C传递任何数据A.

本来我认为A会收到C的Intent,所以我可以将B的数据传给C然后传给A,但这是错误的。活动A在流程4中没有收到任何Intent

现在我决定更改向上按钮的动作,使其与后退按钮相同,因此流程4将消失。

+0

我也面临同样的问题很多次,我按照以下方式处理这种情况。在onCreate()中的活动A中注册一个广播并在onDestroy()中取消注册。从活动C发送具有相同意图行动的路演。这对我来说很好,但我怀疑这是正确的解决方案。希望其他人能通过更好的解决方案跳入这一点 –

回答

0

有一个在流没有问题4.

只需要在B修改数据,无需将数据传递到其他活动。

拨打setResult()之前B完成像其他flow.it将返回到A成功。

0

这不是直接回答这个问题,但推荐:

当有活动或者需要太多的活动之间的高交互性的,而不是太多的活动或活动的交易,尽量使用片段

使用接口(与JAVA相同/类似)是片段的魔术棒。 片段化的使用使得编码变得简单如字面般地交换页面(Damned useful)。

这里是有用的链接:(您可以复制,粘贴此代码,并且可以根据您的要求操作)

  1. https://developer.android.com/guide/components/fragments.html
  2. https://developer.android.com/training/basics/fragments/creating.html
相关问题