2012-08-14 38 views
0

您好我有一個實現Parcelable像這樣一類:解組在parcelable

public class adapterSource implements Parcelable { 
    String adiSoyadi; 
    String isemriTipi; 
    String ililce; 
    String mahalle; 
    String saat; 
    String durum; 

    private List<adapterSource> s; 

    public adapterSource(String adiSoyadi, String isemriTipi,String ililce, String mahalle, String saat, String durum) { 
     this.adiSoyadi = adiSoyadi; 
     this.isemriTipi = isemriTipi; 
     this.ililce = ililce; 

     this.mahalle = mahalle; 

     this.saat = saat; 
     this.durum = durum; 
    } 

    public adapterSource(Parcel in) { 
     s = new ArrayList<adapterSource>(); 
     in.readList(s, in.getClass().getClassLoader()); 
     adiSoyadi=in.readString(); 
     isemriTipi=in.readString(); 
     ililce=in.readString(); 
     mahalle=in.readString(); 
     saat=in.readString(); 
     durum=in.readString(); 
    } 

    public int describeContents() { 
     return 0; 
    } 

    public void writeToParcel(Parcel arg0, int arg1) { 
    } 

    public static final Parcelable.Creator<adapterSource> CREATOR = new Parcelable.Creator<adapterSource>() { 
     public adapterSource createFromParcel(Parcel in) { 
     return new adapterSource(in); 
     } 

     public adapterSource[] newArray(int size) 
     { 
     return new adapterSource[size]; 
     } 
    }; 
} 

,我試圖讓這個類的一個實例,在一個活動是這樣的:

adapterSource[] source = new adapterSource[7]; 
source[0] = (adapterSource) new adapterSource("isa", "isa", "asd", "asd", "asd", "asd"); 
source[1] = new adapterSource("isa", "isa", "asd", "asd", "asd", "asd"); 
source[2] = new adapterSource("isa", "isa", "asd", "asd", "asd", "asd"); 
source[3] = new adapterSource("isa", "isa", "asd", "asd", "asd", "asd"); 
source[4] = new adapterSource("isa", "isa", "asd", "asd", "asd", "asd"); 
source[5] = new adapterSource("isa", "isa", "asd", "asd", "asd", "asd"); 
source[6] = new adapterSource("isa", "isa", "asd", "asd", "asd", "asd"); 
Intent in = new Intent().setClass(this, MainListActivity.class); 

in.putExtra("source", source); 

startActivity(in); 

而且我我打電話從這樣的另一個活動:

adapterSource[] ada= (adapterSource[]) this.getIntent().getParcelableArrayExtra("source"); 

我得到解組錯誤。問題是什麼。請幫助...

+0

沒有身體知道????????? ** – 2012-08-14 12:59:29

+0

請張貼錯誤文本 – QED 2012-08-14 13:13:19

+0

你可以張貼'logcat'痕跡? – 2012-08-14 16:03:55

回答

0

當然,你缺少或忘記實施writeToParcel(),實際的對象序列化/展平發生在這裏。您需要單獨地加密對象的每個元素。

第二件事,你是在一個錯誤的方式使用in.readList();,如果parcelable對象包含自定義對象的名單,你需要讓你的自定義類也Parcelable,需要使用 - in.readList();

那麼你的代碼應該像

public class adapterSource implements Parcelable { 
    String adiSoyadi; 
    String isemriTipi; 
    String ililce; 
    String mahalle; 
    String saat; 
    String durum; 

    public adapterSource(String adiSoyadi, String isemriTipi, String ililce, 
      String mahalle, String saat, String durum) { 
     this.adiSoyadi = adiSoyadi; 
     this.isemriTipi = isemriTipi; 
     this.ililce = ililce; 
     this.mahalle = mahalle; 
     this.saat = saat; 
     this.durum = durum; 
    } 

    public adapterSource(Parcel in) { 
     adiSoyadi = in.readString(); 
     isemriTipi = in.readString(); 
     ililce = in.readString(); 
     mahalle = in.readString(); 
     saat = in.readString(); 
     durum = in.readString(); 
    } 

    public int describeContents() { 
     return 0; 
    } 

    public void writeToParcel(Parcel arg0, int arg1) { 
     arg0.writeString(adiSoyadi); 
     arg0.writeString(isemriTipi); 
     arg0.writeString(ililce); 
     arg0.writeString(mahalle); 
     arg0.writeString(saat); 
     arg0.writeString(durum); 
    } 

    public static final Parcelable.Creator<adapterSource> CREATOR = new Parcelable.Creator<adapterSource>() { 
     public adapterSource createFromParcel(Parcel in) { 
      return new adapterSource(in); 
     } 

     public adapterSource[] newArray(int size) { 
      return new adapterSource[size]; 
     } 
    }; 
}