android - startActivityForResult 和 FLAG_ACTIVITY_CLEAR_TOP

标签 android android-intent

我有一个 Activity A,它使用 startActivityForResult 启动一个新 Activity B。
Activity B 使用 FLAG_ACTIVITY_CLEAR_TOP 重启了几次,所以当用户点击返回时,B 使用 setResult() 放置数据并返回到 Activity A。
但是,数据丢失了。调用 A 中的 onActivityResult 时默认为 null 和 resultCode。

我知道,事实上,这是正确的行为,因为 FLAG_ACTIVITY_CLEAR_TOP 丢弃了以前的 Activity ,但我想知道是否有一些解决方法来实现这一点(除了避免重启 B 等显而易见的选项之外)

最佳答案

当您重新启动 Activity B 时,将 FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOP 添加到您的启动 Intent 中。

activityBIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);

重新启动 Activity B 也会调用 onNewIntent(Intent),但是 getIntent() 仍会传送旧的(原始)intent。

Note that getIntent() still returns the original Intent. You can use setIntent(Intent) to update it to this new Intent.

关于android - startActivityForResult 和 FLAG_ACTIVITY_CLEAR_TOP,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17148246/

相关文章:

java - 如何将日历对象转换为特定时区

android - 创建自定义样式会导致应用程序崩溃

android - 如何通过小部件按钮触发某些内容?

android - PendingIntent 未启动应用程序

java - 由于无法读取源文件,该项目未构建

android - Kotlin 中 OnclickListener 方法的区别

android - 如何在android中获取epub书的图像

android-intent - GA Android SDK中的广告系列评估令人困惑

android - Camera App Orientation 刷新父 Activity?

java - Android:上下文是否影响filterEquals(),用于取消报警?