在SecondActivity结束后,onActivityResult()没有被调用

3
我在FirstActivity中调用了SecondActivity。请看下面的代码示例:
    Intent intent = new Intent(this, SecondActivity.class);
    intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK);
    activity.startActivityForResult(intent, 1);

在我的SecondActivity中,我完成了特定屏幕并将其设置为RESULT_OK。
    activity.setResult(Activity.RESULT_OK);
    activity.finish();

回到我的FirstActivity,我重写了onActivityResult(params)方法

    @Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);

    if(requestCode == 1) { //to make sure request was successful
        if (resultCode == Activity.RESULT_OK) {
            finish();
        }
    }
}

但是在完成 SecondActivity 后,onActivityResult() 没有被调用。尝试进行调试,在 FirstActivity 的第一次启动时,onActivityResult() 会被调用,但从 SecondActivity 返回时不再被调用。

可能的问题是什么?

先行感谢!


1
你为什么要使用这个标志呢?intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK); - HedeH
@HedeH,如果我的SecondActivity不在后台,则始终将其作为新任务启动。 - Cha
1
那你为什么需要它呢? - hardartcore
没有在清单文件中设置任何启动模式。 - Cha
1
Manifest 中还有其他有趣的配置吗?你的 FirstActivity 扩展了什么?为什么需要调用 super.onActivityResult?我很乐意帮忙,但我感觉缺少一些信息... - HedeH
显示剩余2条评论
2个回答

4
您不能同时使用FLAG_ACTIVITY_NEW_TASKstartActivityForResult
在该标志的文档中已经声明:

当调用者要求从正在启动的活动中获得结果时,无法使用此标志。


0

你需要在第二个Activity中创建答案意图,它应该长这样:

            Intent answIntent = new Intent();
            setResult(RESULT_OK, answIntent); 

            finish();

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接