1

我有一个活动 A,它使用 startActivityForResult 启动一个新活动 B。
Activity B 用 重启了几次FLAG_ACTIVITY_CLEAR_TOP,所以当用户点击返回的时候,B 把数据setResult()放到 Activity A上
,但是数据丢失了。onActivityResult默认情况下,in A 的调用意图为 null 和 resultCode。

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

4

1 回答 1

3

FLAG_ACTIVITY_CLEAR_TOP重新启动 Activity B 时,将和都添加FLAG_ACTIVITY_SINGLE_TOP到您的启动意图中。

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

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

请注意,getIntent() 仍然返回原始 Intent。您可以使用 setIntent(Intent) 将其更新为这个新的 Intent。

于 2015-07-13T15:51:02.327 回答