標籤:
關於 android Intent 傳對象和對象數組的一些操作分類: android GUI2013-10-10 00:47 2551人閱讀 評論(5) 收藏 舉報androidintent傳遞對象傳遞對象數組
直接開正題,Intent傳遞值就是平常那些很簡單的,接下來介紹傳遞 對象,和 對象數組
1 .intent 傳遞自訂的 對象 -
實體類繼承 Serializable
[java] view plaincopy
-
[java] view plaincopy
- public class AA implements Serializable{
-
- public String a;
- public String aa;
- public String aaa;
-
-
- }
intent塞入資料端
[java] view plaincopy
- AA a = new AA();
- a.a="a";
- a.aa ="aa";
- a.aaa = "aaa";
-
- Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
- Bundle bu = new Bundle();
- bu.putSerializable("enty", a);
- in.putExtras(bu);
- startActivity(in);
intent 接收資料端
[java] view plaincopy
- AA a =(AA)this.getIntent().getExtras().getSerializable("enty");
- System.out.println("a.a ="+ app.a);
- System.out.println("a.aa ="+ app.aa);
- System.out.println("a.aaa ="+ app.aaa);
實體類類繼承 Parcelable(簡單介紹一下:
1.什麼是Parcelable ?
Parcelable,定義了將資料寫入Parcel,和從Parcel中讀出的介面。一個實體(用類來表示),如果需要封裝到訊息中去,就必須實現這一介面,實現了這一介面,該實體就成為“可打包的”了。
2.Parcelable 傳遞對象
Android序列化對象主要有兩種方法:
1.1實現Serializable介面是JavaSE本身就支援的;
1.2實現Parcelable介面,Parcelable是Android特有的功能,效率比實現Serializable介面高,像用於Intent資料傳遞也都支援,而且還可以用在處理序間通訊(IPC),
除了基本類型外,只有實現了Parcelable介面的類才能被放入Parcel中。
)
Parcelable的介面的定義:
[java] view plaincopy
- public interface Parcelable {
- //內容描述介面
- public int describeContents();
- //寫入介面函數,打包
- public void writeToParcel(Parcel dest, int flags);
- //1.讀取介面,目的是要從Parcel中構造一個實現了Parcelable的類的執行個體處理。因為實作類別在這裡還是不可知的,所以需要用到模板的方式,繼承類名通過模板參數傳入。
- //2.為了能夠實現模板參數的傳入,這裡才定義CREATOR嵌入介面,有兩個介面函數分別返回單個和多個繼承類執行個體。
- public interface Creator<T> {
- public T createFromParcel(Parcel source);
- public T[] newArray(int size);
- }
[java] view plaincopy
- public class AA implements Parcelable{
-
- public String a;
- public String aa;
- public String aaa;
-
- @Override
- public int describeContents() {
- return 0;
- }
-
- @Override
- public void writeToParcel(Parcel parcel, int flags) {
- //序列化對象,必須按照聲明順序
- parcel.writeString(a);
- parcel.writeString(aa);
- parcel.writeString(aaa);
-
- }
- //必須實現這個介面,它的作用是從 percel中讀出來資料,順序必須按照聲明順序
- public static final Parcelable.Creator<AA> CREATOR = new Creator<AA>(){
- @Override
- public AA createFromParcel(Parcel source) {
- AA app= new AA();
- app.a = source.readString();
- app.aa = source.readString();
- app.aaa = source.readString();
- return app;
- }
- @Override
- public AA[] newArray(int size) {
- return new AA[size];
- }
-
- };
- }
intent塞入資料端
[java] view plaincopy
- AA a = new AA();
- a.a="a";
- a.aa ="aa";
- a.aaa = "aaa";
-
- Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
- Bundle bu = new Bundle();
- bu.putParcelable("enty", a);
- in.putExtras(bu);
- startActivity(in);
接收資料端
[java] view plaincopy
- // 可以這樣app =(AA)this.getIntent().getParcelableExtra("enty");
- //也可以這樣寫,上面的也是
- app =(AA)this.getIntent().getExtras().getParcelable("enty");
- System.out.println("a.a ="+ app.a);
- System.out.println("a.aa ="+ app.aa);
- System.out.println("a.aaa ="+ app.aaa);
2。 下來是 自訂對象 數組傳遞
實體類類繼承 Parcelable
intent塞入資料端
[java] view plaincopy
- List<AA> list_aa =new ArrayList<AA>();
- AA a = new AA();
- a.a="a";
- a.aa ="aa";
- a.aaa = "aaa";
-
- AA a1 = new AA();
- a1.a="a1";
- a1.aa ="aa1";
- a1.aaa = "aaa1";
-
- list_aa.add(a);
- list_aa.add(a1);
-
- Intent in = new Intent().setClass(MainActivity.this, MainActivity1.class);
- Bundle bu = new Bundle();
- bu.putParcelableArrayList("list", (ArrayList<? extends Parcelable>) list_aa); //---
- in.putExtras(bu);
- startActivity(in);
接收list資料端
[java] view plaincopy
- List<AA> aa =this.getIntent().getExtras().getParcelableArrayList("list");
-
- for (AA aa2 : aa) {
- System.out.println("list_a.a = "+ aa2.a);
- System.out.println("list_a.aa = "+ aa2.aa);
- System.out.println("list_a.aaa = "+ aa2.aaa);
- System.out.println("=================================");
-
- }
- 上一篇JNI 入門
- 下一篇關於 android的 渲染器 Shader
-
頂
關於 android Intent 傳對象和對象數組的一些操作