1

我有 3 个活动:A、B、C。

我希望活动按如下方式工作:

A startActivityForResult B; B 可以启动 C 或将结果发送给 A;C 可以返回 B 或将结果发送给 A。

当 B 将结果发送给 A 时,B 必须从 backstack 中移除。当 C 向 A 发送结果时,B 和 C 必须从 backstack 中移除。

我无法将结果从 C 发送到 A。这意味着必须重新使用 A(未重新创建)并且必须调用 onActivityResult() 来处理结果:

我已尝试使用此代码,但重新创建了 A 并且未调用 onActivityResult() !

public class C extends Activity{
    sendResultToA(){
        Intent i = new Intent(getActivity(), A.class);
        i.putExtra("dataBean", dataBean);
        i.putExtra("args", "save");
        i.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP);
        getActivity().setResult(Activity.RESULT_OK, i);
        startActivity(i);
    }
}

有什么想法可以解决这个问题吗?谢谢

4

1 回答 1

5

是的,你可以解决这个问题,

From Activity A -> startActivityForResult(ActivityB)

From Activity B -> startActivityForResult(ActivityC)

如果全部成功,则通过以下方式设置结果。

Intent i = new Intent();
i.putExtra("dataBean", dataBean);
i.putExtra("args", "save");
setResult(Activity.RESULT_OK,i); //pass your intent
finish(); // Call finish to remove ActivityC from the stack

如果您在 ActivityB 中收到成功,则执行相同操作。使用and检查onActivityResult结果是成功还是取消 。Activity.RESULT_OKActivity.RESULT_CANCELED

于 2013-06-12T08:54:19.650 回答