startActivityForResult用于多个活动

时间:2014-10-09 13:11:23

标签: android

我将startActivityForResult用于这样的两个活动

Activity A -> startActivityForResult(ActivityB,0) -> Activity B -> setresult(10); finish(); -> Activity A -> if(result==10) {dofunction(); }

但我必须将此逻辑用于4个或更多活动。

Activity A -> startActivityForResult(ActivityB,0) -> Activity B -> finish(); -> Activity C -> finish(); -> Activity D -> setresult(10); finish(); -> Activity A -> if(result==10) {dofunction(); }

但这不起作用。

2 个答案:

答案 0 :(得分:36)

解决方案:

Activity A -> startActivityForResult(activityB,0);
Activity B -> activityCintent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); startActivity(activityCintent); finish();
Activity C -> activityDintent.setFlags(Intent.FLAG_ACTIVITY_FORWARD_RESULT); startActivity(activityDintent); finish();
Activity D -> setresult(10); finish();
Activity A -> if(result==10) {dofunction(); } YEPPP

这是FLAG_ACTIVITY_FORWARD_RESULT的逻辑。首先,您为结果启动活动,新活动会将此意图发送到另一个新活动,直到您设置结果。 我希望这对有同样问题的人有帮助。

答案 1 :(得分:1)

startActivityForResult(ActivityB,0)中命名活动后,我们为指定的活动提供请求代码,即; startActivityForResult(ActivityB,REQUEST_CODE_FOR_ACTIVITYB)。请求代码是任何整数。然后在onActivityResult检查每个请求代码并实现您的逻辑