[英]How to pass an object of a class using an intent?
如何使用intent
傳遞class
的object
?
例如
MyClass mc = new MyClass();
如何使用intent
傳遞mc
?
包裹是一種輕量級的IPC(進程間通信)數據結構,您可以在其中以字節流形式展平對象。
Parcelable是Android專用的界面,您可以在其中自行實現序列化。 它的創建要比Serializable效率高得多,並且可以解決默認Java序列化方案中的一些問題。
1.實現一個接口android.os.Parcelable,該對象將成為Parcelable類的對象。
2.將下面的android.os.Parcelable接口的兩種方法覆蓋如下:
describeContents()-定義要打包的對象的類型。
writeToParcel(Parcel dest,int flags)-實際的對象序列化/展平在這里進行。 您需要單獨包裹對象的每個元素。
3.定義一個名為CREATOR的Parcelable.Creator類型的變量
http://prasanta-paul.blogspot.com/2010/06/android-parcelable-example.html
Java的序列化太慢了,太慢了,無法滿足Android的進程間通信要求。 因此,團隊構建了Parcelable解決方案。 Parcelable方法要求您顯式地序列化類的成員,但是最后,您可以更快地序列化對象。
Serializable的問題在於,它試圖適當地處理陽光下的所有事物,並使用大量反射來確定要序列化的類型。
使用可序列化的對象,並將其直接保留在Bundle或Intent中
發送對象
Intent mIntent=new Intent();
mIntent.putExtra("iis",new MyClass());
和你的班級
private class MyClass implements Serializable{
}
到達另一端
MyClass mc=(MyClass) getIntent().getExtras().getSerializable("iis");
更新
您也可以將數據作為Parcelable對象發送。 但要記住
如果要通過意圖將非原始類型的數據/對象發送到另一個活動,則必須對該對象進行序列化或實現Parcelable。 首選技術是Parcelable,因為它doesn't impact the performance
一種選擇是讓您的類實現Serializable接口,然后可以使用Intent#putExtra()方法的putExtra(Serializable ..)變體在意圖中額外傳遞對象實例。
Passing :
intent.putExtra("MyClassObject", obj);
To retrive
getIntent().getSerializableExtra("MyClassObject");
你的班:
public class myClassObject implements Serializable {
public myClassObject(){
}
}
意圖傳遞:
Intent intent = new Intent(MainActivity.this,NextActivity.class);
intent.putExtra("question_data", qData);
intent.putExtra("answer_string", answer);
startActivity(intent);
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.