首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >安卓:可打包的ClassNotFound解组崩溃

安卓:可打包的ClassNotFound解组崩溃
EN

Stack Overflow用户
提问于 2014-07-01 05:37:45
回答 2查看 1.2K关注 0票数 0

所以我已经检查了很多不同的帖子,但我仍然没有找到解决这个问题的方法。这可能是我没有注意到的一些小问题,但我想我会在这个问题上得到更多的关注:)

我的某个库项目中的模型对象:

代码语言:javascript
复制
  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,它将停止崩溃:

代码语言:javascript
复制
@Override
public void onSaveInstanceState(Bundle outState) {
    super.onSaveInstanceState(outState);
    if( mVenue != null ) {
        outState.putParcelable( EXTRA_VENUE, mVenue );
    }
}

Logcat输出:

代码语言:javascript
复制
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行的构造函数中的所有行,以查看是否至少停止了暂时崩溃(不会)

如有任何建议,我们将不胜感激。

EN

回答 2

Stack Overflow用户

发布于 2014-07-01 06:35:55

感谢大家的投入。我发现了问题所在--我们使用的MapFragment并不喜欢我们的场所可打包。在这里找到答案:

BadParcelableException in google maps code

票数 1
EN

Stack Overflow用户

发布于 2014-07-01 06:07:42

这种错误通常是由路径配置上的一些错误引起的。检查您的配置路径是否正确,如果您有deploy configuration,请确保将课堂场所配置为要部署。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/24499338

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档