我将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(); }
但这不起作用。
答案 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
检查每个请求代码并实现您的逻辑