我有一个 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_TOP
和 FLAG_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/