这是我在我的应用程序中执行此操作的方式: ActivityA 是第一个启动的;它依次启动 ActivityB。在 ActivityB 中我可能会遇到错误,在这种情况下我想返回到 activityA,或者一切都可能正确完成,在这种情况下我想完全“完成”应用程序。
在活动 A 中:
public class ActivityA extends Activity {
...
private final static int REQUEST_ACT_B = 1;
...
private void startChild() {
startActivityForResult(new Intent(this, ActivityB.class), REQUEST_ACT_B;
}
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
if(requestCode == REQUEST_TASK && resultCode == ActivityB.RESULT_OK) {
this.finish();
}
}
}
然后在 ActivityB 中:
public class ActivityB extends Activity {
...
public final static int RESULT_OK = 1;
public final static int RESULT_ERROR = 2;
...
private void finishWithError() {
setResult(RESULT_ERROR);
finish();
}
private void finishSuccessfully() {
setResult(RESULT_OK);
}
}
本质上,ActivityA 启动 ActivityB 并期望返回结果。如果它收到返回的结果“OK”,那么它会自行关闭并且用户也不知道:应用程序已经完成。如果收到结果“错误”,则 ActivityA 保持打开状态。