所以我檢查了很多不同的帖子,我仍然沒有找到這個問題的解決方案。這也可能是小東西,我只是沒有注意到,但我想我會得到這個問題:)在我的圖書館項目之一Android:Parcelable ClassNotFound Unmarshalling Crash
Model對象眼睛的額外集:
public class Venue implements Parcelable {
private String id;
private String city;
private String state;
private String name;
private String category;
private String subcategory;
private double latitude;
private double longitude;
private List<Venue> related;
public Venue() {
}
public Venue(Parcel parcel) {
id = parcel.readString();
city = parcel.readString();
state = parcel.readString();
name = parcel.readString();
category = parcel.readString();
subcategory = parcel.readString();
latitude = parcel.readDouble();
longitude = parcel.readDouble();
related = new ArrayList<Venue>();
parcel.readTypedList(related, Venue.CREATOR);
}
public String getId() {
return id;
}
public void setId(String id) {
this.id = id;
}
public String getCity() {
return city;
}
public void setCity(String city) {
this.city = city;
}
public String getState() {
return state;
}
public void setState(String state) {
this.state = state;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
public String getCategory() {
return category;
}
public void setCategory(String category) {
this.category = category;
}
public String getSubcategory() {
return subcategory;
}
public void setSubcategory(String subcategory) {
this.subcategory = subcategory;
}
public double getLatitude() {
return latitude;
}
public void setLatitude(double latitude) {
this.latitude = latitude;
}
public double getLongitude() {
return longitude;
}
public void setLongitude(double longitude) {
this.longitude = longitude;
}
public List<Venue> getRelated() {
return related;
}
public void setRelated(List<Venue> related) {
this.related = related;
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(id);
dest.writeString(city);
dest.writeString(state);
dest.writeString(name);
dest.writeString(category);
dest.writeString(subcategory);
dest.writeDouble(latitude);
dest.writeDouble(longitude);
dest.writeTypedList(related);
}
public static final Creator<Venue> CREATOR = new Creator<Venue>() {
@Override
public Venue createFromParcel(Parcel source) {
return new Venue(source);
}
@Override
public Venue[] newArray(int size) {
return new Venue[size];
}
};
}
方法是導致我的Android項目崩潰。如果我註釋掉outState.putParcelable,它停止崩潰:
@Override
public void onSaveInstanceState(Bundle outState) {
super.onSaveInstanceState(outState);
if(mVenue != null) {
outState.putParcelable(EXTRA_VENUE, mVenue);
}
}
logcat的輸出:
E/Parcel﹕ Class not found when unmarshalling: com.companyname.android.model.schedule.Venue
java.lang.ClassNotFoundException: com.companyname.android.model.schedule.Venue
at java.lang.Class.classForName(Native Method)
at java.lang.Class.forName(Class.java:251)
at android.os.Parcel.readParcelableCreator(Parcel.java:2133)
at android.os.Parcel.readParcelable(Parcel.java:2097)
at android.os.Parcel.readValue(Parcel.java:2013)
at android.os.Parcel.readArrayMapInternal(Parcel.java:2314)
at android.os.Bundle.unparcel(Bundle.java:249)
at android.os.Bundle.getBundle(Bundle.java:1184)
at gui.a(SourceFile:74)
at ouj.a(Unknown Source)
at grv.onTransact(SourceFile:89)
at android.os.Binder.transact(Binder.java:361)
at com.google.android.gms.maps.internal.IMapFragmentDelegate$a$a.onCreate(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$a.onCreate(Unknown Source)
at com.google.android.gms.dynamic.a$3.b(Unknown Source)
at com.google.android.gms.dynamic.a$1.a(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$b.ip(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment$b.a(Unknown Source)
at com.google.android.gms.dynamic.a.a(Unknown Source)
at com.google.android.gms.dynamic.a.onCreate(Unknown Source)
at com.google.android.gms.maps.SupportMapFragment.onCreate(Unknown Source)
at ....
什麼我試圖解決這個問題:
使用parcel.readList而非readTypedList並刪除包裹和writeToParcel線構造函數中的所有行,以查看是否至少暫時停止崩潰(它不)
任何suggestio恩將非常感激。
你試過從readTypeList(_,_)改爲readArrayList(Venue.class.getClassLoader()),並改變writeTypedList(_)以writeArrayList(_)?我使用「typed」列表API看到了很多問題,因爲正在使用錯誤的類加載器。 – bstar55
謝謝。我嘗試過,但仍然有問題。繼續玩,看看我是否無法使用它。去看看路徑配置的東西,看看我能理解這篇文章中的其他答案:) –