Serializable Parcelable
Android中Intent中如何傳遞對象,一種是 Bundle.putSerializable(Key,Object);另一種是Bundle.putParcelable(Key, Object);當然這些Object是有一定的條件的,前者是實現了Serializable接口,而后者是實現了Parcelable接口
?
1.Serializable
對象類:
public class User implements Serializable{
??? public User(int age, String name) {
??????? this.age = age;
??????? this.name = name;
??? }
??? public int age;
??? public String name;
}
傳遞類:
Bundle bundle = new Bundle();
bundle.putSerializable("user", new User(26, "xiaohong"));
Intent intent = new Intent(this, DemoActicity.class);
intent.putExtras(bundle);
startActivity(intent);
接受類:
User user = (User)getIntent().getExtras().getSerializable("user");
?
?
Parcelable
對象類:
public class Student implements Parcelable{
??? public int number;
??? public String name;
??? @Override
??? public int describeContents() {
??????? return 0;
??? }
??? @Override
??? public void writeToParcel(Parcel parcel, int i) {
??????? parcel.writeInt(number);
??????? parcel.writeString(name);
??? }
??? /**
???? * 1.此處必須加上 public static final
???? * 2.此處變量名字必須為? CREATOR
???? */
??? public static final Parcelable.Creator<Student> CREATOR = new Parcelable.Creator<Student>() {
??????? @Override
??????? public Student createFromParcel(Parcel parcel) {
??????????? Student student = new Student();
??????????? student.number = parcel.readInt();
??????????? student.name = parcel.readString();
??????????? return student;
??????? }
??????? @Override
??????? public Student[] newArray(int i) {
??????????? return null;
??????? }
??? };
}
傳遞類:
Student student = new Student();
student.number = 1;
student.name = "xiaohong";
Bundle bundle = new Bundle();
bundle.putParcelable("student", student);
Intent intent = new Intent(this, DemoActicity.class);
intent.putExtras(bundle);
startActivity(intent);
接受類:
User user = (User)getIntent().getExtras().getParcelable("user");
總結
以上是生活随笔為你收集整理的Serializable Parcelable的全部內容,希望文章能夠幫你解決所遇到的問題。