2014-10-28 73 views
2

我有3项活动。比方说A,B,C。主要活动是A.Android三项活动,将数据从第三项活动传递给家长活动

我想从A开始B,然后从B开始C,然后在C开启时关闭B.最后C关闭数据传递给A.

特别是Intent和startActivityForResult可能如何呢?后两种方法完全有可能吗?

谢谢。

+0

由于B在C关闭前关闭,我认为您需要另一个地方来存储C的结果,以便A可以访问它们。你应该考虑一个单例,或者重写你的Application对象来保存这些数据。 – 2014-10-28 23:26:15

+0

您可以从活动c开始活动a并在意图中设置所有数据。只要你有活动a就可以作为一项活动。然后将调用活动A上的New intent方法。无需为结果设置活动。 – jvrodrigues 2014-10-28 23:43:27

回答

3

Supose你使用一个按钮,当您单击按钮启动活动C,就可以完成活动B,并获得在活动A.活动A.

使用onActivityResult()的作用在这个pont上,你可以使用startActivityForResult()来启动活动C.

这样,当您完成C时,您可以再次使用onActivityResult()将数据传递给A.

+0

这个伎俩。我不敢相信我从来没有想过:) – user1319668 2014-10-29 14:44:11

+0

很高兴帮助!请接受它作为答案 – 2014-10-29 15:35:30

+0

会产生生命周期问题吗? – Gensoukyou1337 2017-07-24 08:06:16

0

您可以始终使用Intents从B和A从B开始B. 当您从堆栈中删除A时,C无法使用startActivityforResult()和onActivityResult直接将数据传递给A。 (这不是很明显,A甚至不存在于内存中)。 因此,对于A访问C的数据,您必须将C的数据存储在某处,以便A可以在下次启动时访问它。现在,这里另一种情况是将其存储为持久或非持久数据。如果你希望数据是持久的,所以推荐使用共享偏好,数据库等,如果你希望它是不可持久的,那么你可以使用辛格尔顿等

参见:http://developer.android.com/guide/faq/framework.html

1

雷南·洛佩斯费雷拉的回答做到了诀窍。干杯。

相关问题