我正在尝试使用从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的逻辑。首先,您为结果启动一个活动,新活动将该意图发送到另一个新活动,直到您设置结果。