yılında Parcelable Verilerini kullanırken Bilinmeyen Tipi unmarshalling Ben iki Aktiviteler (A ve B) sahip Android.BundleAndroid | Paketler
kullanarak iki Faaliyetleri aracılığıyla gönderilecek Bir ArrayList'in Parcelable Verilerle Sorun var. Aaaa.class yılında
:
ArrayList<Model> mModelList = new ArrayList<Model>
//Fill ArrayList with a few Model-Objects
Bundle mBundle = new Bundle;
Intent mIntent = new Intent(Aaaa.this, Bbbb.class);
mBundle.putParcelableArrayList("models", mModelList);
mIntent.putExtras(mBundle);
startActivity(mIntent);
Bbbb.class In:
Bundle mBundle = getIntent().getExtras();
ArrayList<Model> = mBundle.getParcelableArrayList("models");
Model.class Parcelable uyguluyor.
Yani, Sorun. ArrayList (Aaaa.class) 'ı doldurup Bundle'a koyduğumda, Bundle Listesinden Objects varios nesnesini içerdiğini görebiliyorum. Daha sonra Bbbb.class'da Listeyi doldurmaya çalıştığımda bir Özel Durum Atılabilir. Intents -
ERROR/AndroidRuntime(11109): FATAL EXCEPTION: main
java.lang.RuntimeException: Unable to start activity ComponentInfo{test/test.activities.Bbbb}: java.lang.RuntimeException: Parcel [email protected]: Unmarshalling unknown type code 7667810 at offset 144
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1651)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:1667)
at android.app.ActivityThread.access$1500(ActivityThread.java:117)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:935)
at android.os.Handler.dispatchMessage(Handler.java:99)
at android.os.Looper.loop(Looper.java:123)
at android.app.ActivityThread.main(ActivityThread.java:3687)
at java.lang.reflect.Method.invokeNative(Native Method)
at java.lang.reflect.Method.invoke(Method.java:507)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:842)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:600)
at dalvik.system.NativeStart.main(Native Method)
Caused by: java.lang.RuntimeException: Parcel [email protected]: Unmarshalling unknown type code 7667810 at offset 144
at android.os.Parcel.readValue(Parcel.java:1913)
at android.os.Parcel.readListInternal(Parcel.java:2092)
at android.os.Parcel.readArrayList(Parcel.java:1536)
at android.os.Parcel.readValue(Parcel.java:1867)
at android.os.Parcel.readMapInternal(Parcel.java:2083)
at android.os.Bundle.unparcel(Bundle.java:208)
at android.os.Bundle.getParcelableArrayList(Bundle.java:1144)
at test.activities.Bbbb.onCreate(Bbbb.java:52)
at android.app.Instrumentation.callActivityOnCreate(Instrumentation.java:1047)
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:1615)
... 11 more
Line52 ben, Model.class diğer Paketi ile iyi çalışıyor burada Sorun ise kesinlikle hiçbir fikrim yok
ArrayList<Model> = mBundle.getParcelableArrayList("models");
olduğunu.
Güncelleme:
Model Sınıfı aşağıdaki gibi.
... ...
// ==================== Parcelable ====================
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel parcel, int flags) {
parcel.writeString(name);
parcel.writeString(address);
}
private Model(Parcel in) {
name = in.readString();
address = in.readString();
}
public static final Parcelable.Creator<Model> CREATOR = new Parcelable.Creator<Model>() {
public Model createFromParcel(Parcel in) {
return new Model(in);
}
public Model[] newArray(int size) {
return new Model[size];
}
};
... ...
bu deneyin:
public class Model implements Parceleble{
private String name;
private String address;
public Model(Parcel parcel){
}
public Model(){
}
public Model(String name, String address){
this.name = name;
this.address = address;
}
//Getter and Setter
//equals, HashCode, toString (autoGenerated from Idea)
@Override
public void writeToParcel(Parcel parcel, int i){
parcel.writeString(name);
parcel.writeString(address);
}
public void readFromParcel(Parcel parcel){
this.name = parcel.readString();
this.address = parcel.readString();
}
public static Parcelable.Creator<Model> CREATOR = new Parcelable.Creator<Model>(){
@Override
public Model createFromParcel(Parcel parcel){
return new Model(parcel);
}
@Override
public Model[] new Array(int size){
return new Model[size]
}
};
}
Model sınıfını gönderir misiniz? – yorkw
@yorkw Model.class'ı dilediğiniz gibi gönderin. – Chris