我有以下情况:
活动A -> 活动B(设置noHistory) -> 活动C
当C完成后,我需要将结果返回给A。这可行吗?
我唯一能想到的方法是保留B的历史记录,并通过它转发来自C的结果。然而,如果启动B并从后台恢复程序,则会显示B。我希望不要在栈中保留B。
我唯一能想到的方法是保留B的历史记录,并通过它转发来自C的结果。然而,如果启动B并从后台恢复程序,则会显示B。我希望不要在栈中保留B。
额外细节
在活动A中:
Intent intent = new Intent(getActivity(), B.class);
intent.addFlags(Intent.FLAG_ACTIVITY_NO_HISTORY);
startActivityForResult(intent, REQUEST_CODE);
在活动 A 中:
public void onActivityResult(int requestCode, int resultCode, Intent data) {
if (resultCode == Activity.RESULT_OK && requestCode == REQUEST_CODE) {
// TODO
}
}
在活动B中:
Intent intent = new Intent(getActivity(), C.class);
intent.addFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT);
startActivity(intent);
在活动C中:
Intent intent = new Intent();
// put something to intent
setResult(Activity.RESULT_OK, intent);
finish();
正如Kamen已确认的那样,在这种情况下应使用FLAG_ACTIVITY_FORWARD_RESULT。如教程所述:
如果设置并且此Intent用于从现有活动启动新活动,则现有活动的回复目标将传输到新活动。这样,新活动就可以调用setResult(int)并将该结果发送回原始活动的回复目标。