我有一个活动A,它用startActivityForResult开始一个新的活动B.
活动B使用FLAG_ACTIVITY_CLEAR_TOP
重新启动多次,因此当用户点击返回时,B会使用setResult()
放置数据并返回活动A.
但是,数据丢失。在A中调用onActivityResult
,默认情况下为null和resultCode。
我知道,事实上,这是正确的行为,因为FLAG_ACTIVITY_CLEAR_TOP
放弃了之前的活动,但我想知道是否有一些解决方法来实现这一点(除了明显的选项,如避免重启B)
答案 0 :(得分:3)
重新启动活动B时,将FLAG_ACTIVITY_CLEAR_TOP
和FLAG_ACTIVITY_SINGLE_TOP
添加到启动意图中。
activityBIntent.addFlags(Intent.FLAG_ACTIVITY_CLEAR_TOP | Intent.FLAG_ACTIVITY_SINGLE_TOP);
重新启动活动B也会调用onNewIntent(Intent)
,但getIntent()
仍会提供较旧的(原始)意图。
请注意,getIntent()仍会返回原始的Intent。您可以 使用setIntent(Intent)将其更新为这个新的Intent。