Android物件序列化(Activity之間傳遞物件,Parcelable小例子)
阿新 • • 發佈:2019-02-05
Android中為了能夠在Activity之間傳遞值,需要只用Intent中的put函式。
其中bundle.putParcelable可以實現傳遞物件,但是這個物件的類必須實現Parcelable接口才能夠使用。
下面是一個簡單的在Activity之間傳遞物件的例子。
Parcelable類。最主要的類,也就是我們要傳送的物件的類,需要實現Parcelable介面。
package com.zeph.android.Parcelable; import android.os.Parcel; import android.os.Parcelable; public class BenParcelable implements Parcelable { public String name; public int age; public String profession; public BenParcelable(String name, int age, String profession) { this.name = name; this.age = age; this.profession = profession; } public String getName() { return name; } public void setName(String name) { this.name = name; } public int getAge() { return age; } public void setAge(int age) { this.age = age; } public String getprofession() { return profession; } public void setprofession(String profession) { this.profession = profession; } @Override public int describeContents() { return 0; } @Override public void writeToParcel(Parcel parcel, int flag) { parcel.writeString(name); parcel.writeInt(age); parcel.writeString(profession); } public static final Creator<BenParcelable> CREATOR = new Creator<BenParcelable>() { public BenParcelable createFromParcel(Parcel in) { return new BenParcelable(in); } public BenParcelable[] newArray(int size) { return new BenParcelable[size]; } }; private BenParcelable(Parcel in) { name = in.readString(); age = in.readInt(); profession = in.readString(); } }
ParcelableActivity類,傳遞物件的Activity類。
package com.zeph.android.Parcelable; import android.app.Activity; import android.content.Intent; import android.os.Bundle; import android.view.View; import android.view.View.OnClickListener; import android.widget.Button; public class ParcelableActivity extends Activity { private Button myButton; @Override public void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); myButton = (Button) findViewById(R.id.myButton); myButton.setOnClickListener(new OnClickListener() { @Override public void onClick(View arg0) { BenParcelable benParcelable = new BenParcelable("BenZeph", 23, "Java/Android Engineer"); Intent intent = new Intent(); intent.setClass(getApplicationContext(), GetParcelableActivity.class); Bundle bundle = new Bundle(); bundle.putParcelable("Ben", benParcelable); intent.putExtras(bundle); startActivity(intent); } }); } }
GetParcelableActivity類,接收序列化物件的Activity類。
package com.zeph.android.Parcelable; import android.app.Activity; import android.os.Bundle; public class GetParcelableActivity extends Activity { @Override protected void onCreate(Bundle savedInstanceState) { super.onCreate(savedInstanceState); setContentView(R.layout.main); BenParcelable parcelable = getIntent().getParcelableExtra("Ben"); System.out.println(parcelable.getName()); System.out.println(parcelable.getAge()); System.out.println(parcelable.getprofession()); } }