onActivityResult,startActivityForResult,setResult用法解决从后一个activity带参数跳转到前一个activity

本文介绍了一种在Android应用中实现Activity之间数据传递的方法。通过示例代码展示了如何使用Intent和Bundle来发送和接收复杂对象数据,包括创建对象、设置数据、启动新的Activity并接收返回数据的过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Public class a extends Activity  implements View.OnClickListener {
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
//接收来自class B传的数据 
if (resultCode == 200) {//来自class B
Address addr = (Address) data.getSerializableExtra("address");
//我这里接收的类型为Bundle(对象) 如果是Intent(基本类型) 照下面接收:
// data.getStringExtra(“key”) 接收类型为String         
if (null != addr){
            Log.d(">>>>>>>>>>>>>>",addr.toString());
            tv_ensure_order_addr.setText("收货地址:"+addr.getArea()+//省
                    addr.getCity()+//市
                    addr.getDistrict()+//县/区
                    addr.getStreet()+//街道
                    addr.getAddr());//详细地址
            tv_ensure_order_name.setText("收货人:"+addr.getName());//姓名
            tv_ensure_order_phone.setText(addr.getPhone());//电话
            addr_id = addr.getId();
        }
    }
}


@Override
public void onClick(View view) {
    if (view.getId() == tv_addr.getId()){//去选择地址
        //使用startActivityForResult跳转到class B 而不是startActivity
        startActivityForResult(new        Intent(this,B.class));
    }
}
 
 
}
}


Public class B extends Activity  implements View.OnClickListener
{
@Override
public void onClick(View view) {
case R.id.tv_detail_addr:/*详细地址跳转到页面*/

    if (null != ordersActivityUserId){
        Address address = new Address();
        Bundle bundle = new Bundle();
        address.setArea(list.get(position).getArea());
        address.setDistrict(list.get(position).getDistrict());
        address.setName(list.get(position).getName());
        address.setPhone(list.get(position).getPhone());
        address.setAddr(list.get(position).getAddr());
        address.setStreet(list.get(position).getStreet());
        address.setCity(list.get(position).getCity());
        address.setId(list.get(position).getId());
        bundle.putSerializable("address", address);
        setResult(200, new Intent(Person_Addr.this,A.class).putExtras(bundle));
       //我这里传递的类型为Bundle(对象) 如果是Intent(基本类型) 照下面传:
//setResult(new Intent(Person_Addr.this,OrdersActivity.class).putExtra(“key”,”value”));//传的String
        finish();//必须调用finish才能把数据传给class A
        
    }
}
}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值