使用带有标志 FLAG_ACTIVITY_NEW_TASK 的 startactivityforresult | FLAG_ACTIVITY_CLEAR_TASK

Sud*_*aur 4 android android-intent

我正在尝试从活动 A 开始活动 B,意图设置为Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK现在我想从活动 B 取回一些数据到活动 A,为此我现在正在使用startactivityforresult的问题是,当我setresult从活动 B调用时那么我的活动 Aonactivityresult没有被调用。

谁能告诉我为什么会发生这种情况,如果不能将 startactivityforresult 与(NEW_TASK 和 CLEAR_TASK)一起使用,那么我可以尝试什么来代替这个。

此外,我试图使用以上两个意图,因为我想在打开活动 B 时清除我的后台堆栈。

在活动 A

Intent intent = new Intent(A.this, B.class);
Bundle args = new Bundle();
args.putString("from", "A");
intent.putExtras(args);
intent.setFlags(Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK);
startActivityForResult(intent, 111);
Run Code Online (Sandbox Code Playgroud)

在活动 B

Intent resultIntent = new Intent();
resultIntent.putExtras(data.getExtras());
setResult(Activity.RESULT_OK, resultIntent);
finish();
Run Code Online (Sandbox Code Playgroud)

小智 6

你的问题的答案很简单:

标志Intent.FLAG_ACTIVITY_NEW_TASKstartActivityForResult()不兼容。

所以它不会工作,任何由添加了标志“ FLAG_ACTIVITY_NEW_TASK ”的 Intent 启动的活动都无法返回结果。

这是指定这一点的 Android文档部分。

它说 :

当调用者从正在启动的活动中请求结果时,不能使用此标志。