为什么setResult不能直接返回onActivityResult中的上一个Activity?

时间:2013-11-18 14:54:17

标签: java android

我从startActivityForResult发送ActivityAActivityB

private Uri saveFileToDrive() {
    Intent saveToDriveInten = new Intent(this, GoogleDriveProxeyActivity.class);
    saveToDriveInten.putExtra("fileUri", mCurrentImageUri.toString());
    startActivityForResult(saveToDriveInten, SAVE_TO_DRIVE);
    return null;
}

并在ActivityB我看到:

Intent resultIntent = new Intent();
resultIntent.putExtra("driveUri", file.getAlternateLink());
setResult(Activity.RESULT_OK, resultIntent);

为什么我不回onActivityResult的{​​{1}}?

实际上我不确定在

之后执行了什么代码

ActivityA

我以为我失踪了setResult(Activity.RESULT_OK, resultIntent);但是这让我再次参加了另一个家长活动。

2 个答案:

答案 0 :(得分:5)

是的,您需要在finish()之后致电setResult()

调用setResult()不会关闭或以其他方式结束当前活动,因此用户仍然可以看到它。在另一个Activity完成之前,不会调用onActivityResult()

答案 1 :(得分:3)

  

我错过了完成()

是。在finish()

之后致电setResult()
    Intent resultIntent = new Intent();
    resultIntent.putExtra("driveUri", file.getAlternateLink());
    setResult(Activity.RESULT_OK, resultIntent);
    finish();

[根据文档](http://developer.android.com/reference/android/app/Activity.html#setResult(int,android.content.Intent))

  

调用此方法设置您的活动将返回其调用者的结果。

注意“set”这个词。您仍然需要将控制权返回给接收Activity