Android:将结果发送到清理BackStack顶部的Activity

时间:2013-06-12 08:44:18

标签: android android-activity back-stack

我有3项活动:A,B,C。

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

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

当B将结果发送给A时,必须从Backstack中删除B. 当C将结果发送到A时,必须从Backstack中删除B和C.

我无法从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);
    }
}

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

1 个答案:

答案 0 :(得分: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中获得成功,那么也要这样做。 在onActivityResult中使用Activity.RESULT_OKActivity.RESULT_CANCELED检查结果是否成功或取消。