2014-06-30 3 views
0

그래서 여러 가지 게시물을 확인한 결과이 문제에 대한 해결책을 찾을 수 없습니다. 아마 난 그냥 알아 차리지 아니에요 뭔가 작은, 그러나 나는 문제 : 내 라이브러리 프로젝트 중 하나Android : Parcelable ClassNotFound 비 정렬 충돌

모델 객체에 눈의 세트를 추가로 얻을 거라고 생각 :의

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); 
    } 
} 

로그 캣 출력 :

나는이 문제를 해결하기 위해 노력했습니다 무엇
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 사용을 parcel과 writeToParcel 라인을 사용하여 생성자의 모든 라인을 제거하여 적어도 멈추었는지 일시적으로 중단되는지 확인하십시오 (그렇지 않습니다)

제안 사항 ns는 정말로 감사 할 것입니다.

+1

당신이 readArrayList에 readTypeList (_, _)에서 변경 해봤 (Venue.class.getClassLoader()), 및 변경 writeArrayList에 writeTypedList (_) (_)? 잘못된 클래스 로더가 사용 중이기 때문에 "형식화 된"목록 API를 사용하여 많은 문제를 보았습니다. – bstar55

+0

감사합니다. 나는 그것을 시도했지만 여전히 문제가있다. 내가 그것을 작동시킬 수없는지를보기 위해 계속 놀고있다. 경로 구성 내용을 살펴보고이 게시물의 다른 대답을 이해할 수 있는지 확인하십시오 :) –

답변

0

이러한 종류의 오류는 일반적으로 경로 구성에서 실수로 인해 발생합니다. 구성 경로가 올바른지, 배치 구성이있는 경우 Venue 클래스가 배치되도록 구성되었는지 확인하십시오.

1

모두에게 감사드립니다. 나는이 문제를 알아 냈다. 우리가 우리의 장소를 이해하기가 쉽지 않은 MapFragment를 사용하고 있다는 사실이 사실이다. 여기에 대한 답을 찾았습니다

BadParcelableException in google maps code