int,String등등 단순 자료형 뿐만 아니라 parcelable을 통해 객체를 전달할 수도 있다.
MyClass.class
public class MyClass implements Parcelable {
private String myString;
private int myInt;
private StudyResult myStudy;
public MyClass(String myString, int myInt, StudyResult myStudy) {
this.myString = myString;
this.myInt = myInt;
this.myStudy = myStudy;
}
protected MyClass(Parcel in) {
myString = in.readString();
myInt = in.readInt();
myStudy = in.readParcelable(StudyResult.class.getClassLoader());
}
public static final Creator<MyClass> CREATOR = new Creator<MyClass>() {
@Override
public MyClass createFromParcel(Parcel in) {
return new MyClass(in);
}
@Override
public MyClass[] newArray(int size) {
return new MyClass[size];
}
};
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(myString);
dest.writeInt(myInt);
dest.writeParcelable(myStudy, flags);
}
@Override
public int describeContents() {
return 0;
}
}
StudyResult.class
public static class StudyResult implements Parcelable {
private String subject;
private int score;
public StudyResult(String subject, int score) {
this.subject = subject;
this.score = score;
}
protected StudyResult(Parcel in) {
subject = in.readString();
score = in.readInt();
}
public static final Creator<StudyResult> CREATOR = new Creator<StudyResult>() {
@Override
public StudyResult createFromParcel(Parcel in) {
return new StudyResult(in);
}
@Override
public StudyResult[] newArray(int size) {
return new StudyResult[size];
}
};
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(subject);
dest.writeInt(score);
}
@Override
public int describeContents() {
return 0;
}
}
}
객체를 인텐트로 보내는 경우
Intent intent = new Intent(this , MyClass.class);
intent.putExtra("testInfo" , intent);
startActivity(intent);
객체 받기
Intent intent = new Intent();
MyClass myClass = intent.getParcelable("testInfo");