【四】onactivityresult方法

2019-05-31

1.回调函数:启用其他Activity并返回结果

MainActivity中:

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
//startActivityForResult(Intent,intent,int requestCode)
@Override
public void onCreate(Bundle savedInstanceState)
{
Intent intent = new Intent(MainActivity.this,SelectCityActivity.class);
// 启动指定Activity并等待返回的结果,其中0是请求码,用于标识该请求
startActivityForResult(intent, 0);
}

//重写onActivityResult(int requestCode,int resultCode,Intent intent)(回调函数)
@Override
public void onActivityResult(int requestCode
, int resultCode, Intent intent)
{
// 当requestCode、resultCode同时为0时,也就是处理特定的结果
if (requestCode == 0 && resultCode == 0)
{
// 取出Intent里的Extras数据
Bundle data = intent.getExtras();
// 取出Bundle中的数据
String resultCity = data.getString("city");
// 修改city文本框的内容
city.setText(resultCity);
}
}

SelectCityActivity:

1
2
3
4
5
6
7
8
9
10
{
// 获取启动该Activity之前的Activity对应的Intent
Intent intent = getIntent();
intent.putExtra("city,cities[groupPosition][childPosition]);
// 设置该SelectCityActivity的结果码,并设置结束之后退回的Activity
SelectCityActivity.this.setResult(0, intent);
// 结束SelectCityActivity。
SelectCityActivity.this.finish();
return false;
}
1
设置结果码:setResult(0, intent);

总结:一般可以不用结果码直接finish(),则将返回的intent带有原requestCode,该intent带上数据即可。