我们在开发项目中经常遇到需要把数据传回上一个页面的情况,这时候我们就可以用到
startActivityForResult(intent, 1) 这个方法,这里面带有两个参数,第一个是你要跳转的对象,第二个是传送码
假如我们现在要从activityA →activityB
我们现在activityA中输入以下代码:
Intent intent = new Intent(activityA.this, activityB);
startActivityForResult(intent, 0);
然后在activityB中
在使用setResult(0, intent) 方法跳转,这里参数1 是回传码 参数2 是跳转目的
输入回传的参数:
点击按钮返回:
listViewForScrollView.setOnItemClickListener(new AdapterView.OnItemClickListener() {
@Override
public void onItemClick(AdapterView<?> parent, View view, int position, long id) {
Intent intent = new Intent();
intent.putExtra("selfAddress", ponitList.get(position).getFullRegion());
// 设置结果,并进行传送
SearchPoint.this.setResult(0, intent);
finish();
}
});
物理返回键返回:
@Override
public void onBackPressed() {
// super.onBackPressed();//不能够有该行代码,否则返回崩溃
Intent intent = new Intent();
intent.putExtra(“dataBack”, “Hello Back”);
setResult(RESULT_OK, intent);
finish();
}
最后再activityA中在接受:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
super.onActivityResult(requestCode, resultCode, data);
change01 = data.getStringExtra("address");
selfAddress = data.getStringExtra("selfAddress");
// 根据上面发送过去的请求吗来区别
switch (requestCode) {
case 0x4:
if(resultCode == RESULT_OK){
tv_address.setText(change01);
}
break;
case 0:
tv_choose_address_detail.setText(selfAddress);
tv_ztadress.setText(selfAddress);
break;
default:
break;
}
}
在这个方法中 是根据你发过去的请求码来区别的,例如前面的代码我发送过去的请求码是0,然后回退码是 RESULT_OK ,这里就是根据请求码来执行相对应的结果,图中代码执行的就是 case 0 一下的结果。
这样数据回传就完成了。
希望对你有帮助