2014-06-30 39 views
0

所以我檢查了很多不同的帖子,我仍然沒有找到這個問題的解決方案。這也可能是小東西,我只是沒有注意到,但我想我會得到這個問題:)在我的圖書館項目之一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恩將非常感激。

+1

你試過從readTypeList(_,_)改爲readArrayList(Venue.class.getClassLoader()),並改變writeTypedList(_)以writeArrayList(_)?我使用「typed」列表API看到了很多問題,因爲正在使用錯誤的類加載器。 – bstar55

+0

謝謝。我嘗試過,但仍然有問題。繼續玩,看看我是否無法使用它。去看看路徑配置的東西,看看我能理解這篇文章中的其他答案:) –

回答

0

這種錯誤通常是由路徑配置上的一些錯誤引起的。檢查您的配置路徑是否正確,並且如果您有部署配置,請確保將Venue類配置爲部署。

1

感謝您輸入的每個人。我想出了這個問題 - 這是我們使用MapFragment的事實,它不喜歡我們的場地可以看到。在這裏找到了答案:

BadParcelableException in google maps code