setResult无法正常工作

时间:2016-05-27 20:22:09

标签: java android android-intent android-activity

在我的第一个活动中,我用这种方式调用第二个活动:

Intent intent = new Intent(getActivity(), SecondActivity.class);
startActivityForResult(intent, SOME_TAG);

然后在第二项活动中:

@Override
public void onBackPressed() {
    Intent returnIntent = new Intent();
    setResult(AppCompatActivity.RESULT_OK, returnIntent);
    super.onBackPressed();
}

回到第一个活动:

@Override
public void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    switch (requestCode) {
        case SOME_TAG:
            if (resultCode == AppCompatActivity.RESULT_OK) {
                doStuff();
            }
            break;
        default:
            break;
    }
}

由于某种原因,结果代码永远不会等于RESULT_OK,它每次都会返回0。

1 个答案:

答案 0 :(得分:2)

这种情况正在发生,因为您实际上并未将数据发回。您必须致电finish()返回活动并基本上关闭它。以下是此方法的文档:https://developer.android.com/reference/android/app/Activity.html#finish()。只需在setResult(AppCompatActivity.RESULT_OK, returnIntent)方法中onBackPressed()后调用即可。希望它有所帮助!