0
点赞
收藏
分享

微信扫一扫

Android开发Activity之间传值的四种方式


一、通过putExtra传值

传送:

Intent intent = new Intent(this,MainActivity2.class);
intent.putExtra("name","xupeng");
startActivity(intent);

接收:

Intent intent = this.getIntent();
Log.e(TAG, "onCreate: "+intent.getStringExtra("name"));

二、通过Bundle方式传值

传送:

Intent intent = new Intent(this,MainActivity2.class);
Bundle bundle = new Bundle();
bundle.putString("name","xupeng");
bundle.putInt("age",18);
intent.putExtras(bundle);
startActivity(intent);

接收:

Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
Log.e(TAG, "onCreate: "+bundle.getString("name") + " "+bundle.getInt("age") );

三、通过Serializable方式传值

新建一个类实现Serializable接口

public class Data implements Serializable {
public int id;
public String name;
public int age;

@Override
public String toString() {
return "Data{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}

传送:

Intent intent = new Intent(this,MainActivity2.class);
Data d = new Data();
d.id=100;
d.name="xupeng";
d.age=100;
intent.putExtra("data",d);
startActivity(intent);

接收:

Intent intent = this.getIntent();
Serializable data = intent.getSerializableExtra("data");
Log.e(TAG, "onCreate: "+data.toString() );

四、通过Parcelable方式传值

新建一个类实现Parcelable接口

package com.example.learning01;

import android.os.Parcel;
import android.os.Parcelable;

import java.io.Serializable;

public class Data2 implements Parcelable {
//成员
public int id;
public String name;
public int age;
//构造函数
protected Data2(Parcel in) {
//从parcel读取存入对象
id = in.readInt();
name = in.readString();
age = in.readInt();
}

public Data2() {

}

//自动生成
public static final Creator<Data2> CREATOR = new Creator<Data2>() {
//把Data2对象构建好传递给parcel
@Override
public Data2 createFromParcel(Parcel in) {
return new Data2(in);
}

@Override
public Data2[] newArray(int size) {
return new Data2[size];
}
};

@Override
public int describeContents() {
return 0;
}
//把属性写入到parcel里面去
@Override
public void writeToParcel(Parcel parcel, int i) {
parcel.writeInt(id);
parcel.writeString(name);
parcel.writeInt(age);
}

@Override
public String toString() {
return "Data2{" +
"id=" + id +
", name='" + name + '\'' +
", age=" + age +
'}';
}
}

传送:

Intent intent = new Intent(this,MainActivity2.class);
Data2 d = new Data2();
d.id=1000;
d.name="dddd";
d.age=200;

intent.putExtra("data2",d);
startActivity(intent);

接收:

Intent intent = this.getIntent();
Parcelable data2 = intent.getParcelableExtra("data2");
Log.e(TAG, "onCreate: "+data2.toString() );


举报

相关推荐

0 条评论