我有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);
}
}
有什么想法可以解决这个问题吗?谢谢
答案 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_OK
和Activity.RESULT_CANCELED
检查结果是否成功或取消。