使用startactivityforresult与标志FLAG_ACTIVITY_NEW_TASK | FLAG_ACTIVITY_CLEAR_TASK

4
我正在尝试使用设置为Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK的意图从Activity A启动Activity B,现在我想从Activity B返回一些数据到Activity A,并且为此我正在使用startactivityforresult。但是问题出现了,当我从Activity B调用setresult时,我的Activity A的onactivityresult没有被调用。
请问有人能告诉我这是为什么,如果不可能在(NEW_TASK和CLEAR_TASK)中使用startactivityforresult,那么我应该尝试什么。
此外,我正在尝试使用以上两个意图,因为我想在打开Activity B时清除我的后退堆栈。 在Activity 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);

关于B活动

Intent resultIntent = new Intent();
resultIntent.putExtras(data.getExtras());
setResult(Activity.RESULT_OK, resultIntent);
finish();

请发布您设置和获取数据的代码。 - Brandon Zamudio
@BrandonZamudio 请查看我的更新帖子。 - Sudhanshu Gaur
@BrandonZamudio 有什么消息吗? - Sudhanshu Gaur
你是否能够正确处理onNewIntent方法?并且在清单文件中声明了launchMode吗? - Brandon Zamudio
我还没有声明任何启动模式,为什么要使用onNewIntent?因为setResult返回结果在onActivityResult函数中。 - Sudhanshu Gaur
1个回答

6
你的问题的答案很简单:
标记 "Intent.FLAG_ACTIVITY_NEW_TASK" 不兼容 "startActivityForResult()"。
因此它无法工作,任何由添加了标记 "FLAG_ACTIVITY_NEW_TASK" 的 Intent 启动的活动不能返回结果。
这是 Android 文档 中指定的部分。
它说:

当调用者要求从启动的活动中返回结果时,不能使用此标志。


在文档中没有提到,但如果你使用这个标志并请求一个结果,你会立即收到RESULT_CANCELED(至少在我的情况下)。 - or_dvir

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