第一种:Intent方式传递简单数据
AActivity:
Intent i = new Intent(AActivity.this.BActivity.class);
i.putExtra("data","Hello world!");
startActivity(i);
BActivity:
Intent i = getIntent();
String data = i.getStringExtra("data");
第二种:Bundle数据包方式
AActivity:
Intent i = new Intent(AActivity.this.BActivity.class);
Bundle b = new Bundle();
b.putString("name","zhangsan");
b.putInt("age",20);
i.putExtras(b); //或i.putExtra("data",b)
startActivity(i);
BActivity:
Intent i = getIntent();
Bundle data = i.getExtras(); //Bundle data = i.getBundleExtra("data");
String name = data.getStringExtra("name");
Int age = data.getInt("age");
第三种:Serializable传递自定义对象(java自带)
public class User implements Serializable
private String name;
private int age;
public User(String name,int age){
this.age = age;
this.name = name;
}
}
AActivity:
Intent i = new Intent(AActivity.this.BActivity.class);
i.putExtra("data",new User("zhangsan",20));
startActivity(i);
BActivity:
Intent i = getIntent();
User user = (User) i.getSerializableExtra("data");
第四种:Parcelable传递自定义对象(Android提供)
相比第三种要复杂点,但是速度快
public class User implements Parcelable{
private String name;
private int age;
protected User(Parcel in) {
name = in.readString();
age = in.readInt();
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User(String name,int age){
this.age = age;
this.name = name;
}
@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 in) {
return new User(in.readString(),in.readInt());
}
@Override
public User[] newArray(int size) {
return new User[size];
}
};
}
AActivity:
Intent i = new Intent(AActivity.this.BActivity.class);
i.putExtra("data",new User("zhangsan",20));
startActivity(i);
BActivity:
Intent i = getIntent();
AActivity:
Intent i = new Intent(AActivity.this.BActivity.class);
i.putExtra("data","Hello world!");
startActivity(i);
BActivity:
Intent i = getIntent();
String data = i.getStringExtra("data");
第二种:Bundle数据包方式
AActivity:
Intent i = new Intent(AActivity.this.BActivity.class);
Bundle b = new Bundle();
b.putString("name","zhangsan");
b.putInt("age",20);
i.putExtras(b); //或i.putExtra("data",b)
startActivity(i);
BActivity:
Intent i = getIntent();
Bundle data = i.getExtras(); //Bundle data = i.getBundleExtra("data");
String name = data.getStringExtra("name");
Int age = data.getInt("age");
第三种:Serializable传递自定义对象(java自带)
public class User implements Serializable
private String name;
private int age;
public User(String name,int age){
this.age = age;
this.name = name;
}
}
AActivity:
Intent i = new Intent(AActivity.this.BActivity.class);
i.putExtra("data",new User("zhangsan",20));
startActivity(i);
BActivity:
Intent i = getIntent();
User user = (User) i.getSerializableExtra("data");
第四种:Parcelable传递自定义对象(Android提供)
相比第三种要复杂点,但是速度快
public class User implements Parcelable{
private String name;
private int age;
protected User(Parcel in) {
name = in.readString();
age = in.readInt();
}
public int getAge() {
return age;
}
public void setAge(int age) {
this.age = age;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public User(String name,int age){
this.age = age;
this.name = name;
}
@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 in) {
return new User(in.readString(),in.readInt());
}
@Override
public User[] newArray(int size) {
return new User[size];
}
};
}
AActivity:
Intent i = new Intent(AActivity.this.BActivity.class);
i.putExtra("data",new User("zhangsan",20));
startActivity(i);
BActivity:
Intent i = getIntent();
User user = (User) i.getParcelableExtra("data");