使用标志FLAG_ACTIVITY_NEW_TASK |的startactivityforresult FLAG_ACTIVITY_CLEAR_TASK

时间:2017-05-22 19:09:02

标签: android android-intent

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

任何人都可以告诉我为什么会这样,如果不能使用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);

活动B

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

1 个答案:

答案 0 :(得分:0)

你的问题的答案很简单:

标志 Intent.FLAG_ACTIVITY_NEW_TASK ,与 startActivityForResult()不兼容。

所以它不会工作,任何由Intent启动的活动,旗帜" FLAG_ACTIVITY_NEW_TASK "添加无法返回结果。

以下是指定此内容的Android documentation部分。

它说:

  

当呼叫者请求结果时,不能使用此标志   正在推出的活动。