android - 使用带有标志 FLAG_ACTIVITY_NEW_TASK | 的 startactivityforresult | FLAG_ACTIVITY_CLEAR_TASK

标签 android android-intent

我正在尝试从 Activity A 开始 Activity B, Intent 设置为 Intent.FLAG_ACTIVITY_NEW_TASK | Intent.FLAG_ACTIVITY_CLEAR_TASK 现在我想从 Activity B 取回一些数据到 Activity A,为此我正在使用 startactivityforresult 现在发生的问题是,当我调用 setresult 从 Activity B 然后我的 Activity A 的 onactivityresult 没有被调用。

谁能告诉我为什么会这样,如果不能将 startactivityforresult 与(NEW_TASK 和 CLEAR_TASK)一起使用,那么我可以尝试什么而不是这个。

另外我正在尝试使用以上两个 Intent ,因为我想在我想打开 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);

关于 Activity B

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

最佳答案

你的问题的答案很简单:

标志 Intent.FLAG_ACTIVITY_NEW_TASKstartActivityForResult() 不兼容。

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

这是Android的一部分documentation指定这个。

它说:

This flag can not be used when the caller is requesting a result from the activity being launched.

关于android - 使用带有标志 FLAG_ACTIVITY_NEW_TASK | 的 startactivityforresult | FLAG_ACTIVITY_CLEAR_TASK,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44120431/

相关文章:

android - 在不打开选择器的情况下从 Android 应用程序发送 SMS 消息?

java - 将标签添加到 ClickableSpan

Android 从 MainActivity 中的服务获取数据

android - 使用 Android 教程方法重新缩放图像

java - 当传递给 Intent 构造函数时,从事件处理程序传递 this 与 ClassName.this 有什么区别?

android - 处理 DateTimes 的最有效方法是什么,特别是因为 DATETIME 的一列导致 NUMERIC?

android - 如何使用 WindowManagerPreference :FreeformWindowSize and WindowManagerPreference:FreeformWindowOrientation

android - Activity 是由同一类、同一 Activity 的 Intent 创建的吗?

Android Activity 在进入后台后两次收到相同的 Intent

java - Android Wear修改 "Open on Phone"按钮intent