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

use*_*805 1 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);
    }
}
Run Code Online (Sandbox Code Playgroud)

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

vin*_*thp 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
Run Code Online (Sandbox Code Playgroud)

如果您在ActivityB中获得成功,那么也要这样做.在onActivityResult检查结果是否成功或取消的使用 Activity.RESULT_OKActivity.RESULT_CANCELED.