一个Activity如何发起一项计算任务给另外一个Activity然后返回计算结果?

当然,一种方式是可以通过之间讨论的Intent或者Bundle进行传值,另外一种方式是今天要讲的通过StartActivityForResult来达到目的。

  • 马上学Android 023 - StartActivityForResult的使用

Activity-A通过StartActivityForResult方式启动Activity-B,那么在A代码中需要重新下面的方法

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
//处理逻辑
switch(requestCode) {
case RC_DATA_ACTIVITY:
if(resultCode == RESULT_OK){
//正常返回

} else if(resultCode == RESULT_CANCELED){
//异常返回
}
break;
default:
break;
}
}
}

需要说明的是onActivityResult的三个参数

参数 说明
requestCode 请求码:用于标识请求来源(通俗点:判断发起者是谁?)
resultCode 结果码:用于标示返回结果的来源(通俗点:成功与否?)
data 返回带数据的Intent

在被调用的ActivityB的处理逻辑如下:

1
2
3
4
Intent intent = new Intent()
//绑定需要返回数据到Intent
setResult(FLAG,intent);//FLAG可以为RESULT_OK,也可以为RESULT_CANCELED
finish();

特别注意调用完setResult()之后需要调用finish()否则无法正常返回到Activity。