startActivityForResult和FLAG_ACTIVITY_CLEAR_TOP

时间:2013-06-17 13:08:26

标签: android android-intent

我有一个活动A,它用startActivityForResult开始一个新的活动B.
活动B使用FLAG_ACTIVITY_CLEAR_TOP重新启动多次,因此当用户点击返回时,B会使用setResult()放置数据并返回活动A.
但是,数据丢失。在A中调用onActivityResult,默认情况下为null和resultCode。

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

1 个答案:

答案 0 :(得分:3)

重新启动活动B时,将FLAG_ACTIVITY_CLEAR_TOPFLAG_ACTIVITY_SINGLE_TOP添加到启动意图中。

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

重新启动活动B也会调用onNewIntent(Intent),但getIntent()仍会提供较旧的(原始)意图。

  

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