我正在尝试使用从Activity3检索到Activity1的值。
这是我的流程:


  Activity1调用Activity2→Activity2.finish(),调用Activity3→
  Activity3.doSomethingAndGetValue()→Activity3.finish()→
  Activity1.useDoSomethingAndGetValue();


我找不到将值从Activity3发送回Activity1的方法;即使使用startActivityForResult(),因为到那时Activity2已经被销毁了。

我尝试使用可序列化的接口,并将其作为意图上的附加值传递,但是此解决方案仅适用于传递的对象是静态对象,不允许我对活动1的当前成员变量进行任何更改。

此外,我尝试了所有这些选项,但均未成功:

https://stackoverflow.com/a/17306696/3217203

(我不允许为此使用共享首选项)

有人知道吗?

注意:我无法添加eventBus,我知道这会很棒并且更容易,但是架构不允许我这样做。

最佳答案

启动活动2和3时,您可能想使用Intent中所述的意图标志FLAG_ACTIVITY_FORWARD_RESULT。



Activity 1 -> startActivityForResult(activityB,0);
Activity 2 -> activityCintent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); startActivity(activityCintent); finish();
Activity 3 -> setresult(10); finish();
Activity 1 -> if(result==10) {dofunction(); }


这是FLAG_ACTIVITY_FORWARD_RESULT的逻辑。首先,您为结果启动一个活动,新活动将该意图发送到另一个新活动,直到您设置结果。

10-07 22:20