Activity之间传值

A activity跳转到B activity,值的传递无非两种:A-->B ,B -->A,每种方式可分为数据发送和数据接收两步。

A-->B
  1. 简单数据或者bundle传递
    在startActivity方法中传入intent作为参数,该intent可以包含多种数据类型的数据,也可传入bundle。
    发送:i.putExtra("data","这是传入的值");
    接收:String resStr = i.getStringExtra("data");
  2. 值对象传递
    该值对象需要实现序列化接口:
    一种是java提供的Serializable,接收方直接使用intent.getSerializableExtra("key");进行解析。
    一种是android提供的Parcelable,接收方使用intent.getParcelableExtra("key");进行解析,另外,implements Parcelable的类需要实现几个方法:
@Override
public int describeContents() {
    return 0;
}
@Override
public void writeToParcel(Parcel parcel, int i) {
    parcel.writeString(getName());
    parcel.writeInt(getAge());
}
public static final  Creator<User> CREATOR = new Creator<User>() {
    @Override
    public User createFromParcel(Parcel parcel) {
        return new User(parcel.readString(),parcel.readInt());
    }
    @Override
    public User[] newArray(int i) {
        return new User[i];
    }
};
B-->A

即获取被启动的activity传回的参数

  • A
    当一个activity需要接收返回数据的时候,不能直接使用startActivity这个函数了,需要替换成startActivityForResult(i,reqCode);//第一个参数是传入的数据intent,第二个参数是请求码,标志此次请求的意义。
    需要重写下面的方法来获取返回码和返回值进行处理:
@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {
    super.onActivityResult(requestCode, resultCode, data);
    String resStr = data.getStringExtra("res").toString();
}
  • B
    在组装好要返回的intent数据之后,调用setResult(1,intent);//第一个参数表示返回码,标志成功或失败;第二个是传回的数据
    可以调用finish()函数关闭当前activity
最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容