解组时的ClassNotFoundException(在不同的应用程序之间传递对象)

时间:2017-11-27 11:13:35

标签: java android android-intent parcelable badparcelableexception

我对Parcelable对象有一些问题,并在活动之间传递它。

我有两个不同的应用程序,活动A通过Intent请求活动B和startActivityForResult,B活动发送回两个项目中定义的自定义对象(C类)。这个C类是可以分配的,并且已经定义了所有方法,但是当我试图找回存储在bundle中的那个对象时,我得到了那个异常。

这是我的C级(Equipo)。

public class Equipo implements Parcelable{

public Equipo(Parcel in) {
    readFromParcel(in);
}

public static final Parcelable.Creator<Equipo> CREATOR
        = new Parcelable.Creator<Equipo>() {
    public Equipo createFromParcel(Parcel in) {
        return new Equipo(in);
    }

    public Equipo[] newArray(int size) {
        return new Equipo[size];
    }
};

@Override
public void writeToParcel(Parcel parcel, int i) {
    localizacion.writeToParcel(parcel, i);
    parcel.writeString(nombre);
    parcel.writeString(url);
}

private void readFromParcel(Parcel in) {
    localizacion=Location.CREATOR.createFromParcel(in);
    nombre = in.readString();
    url = in.readString();
}

@Override
public int describeContents() {
    return 0;
}

private String nombre;
private Location localizacion;
private String url;

public Equipo(String nombre, Location localizacion, String url) {
    this.nombre = nombre;
    this.localizacion = localizacion;
    this.url = url;
}

public String getNombre() {
    return nombre;
}

public void setNombre(String nombre) {
    this.nombre = nombre;
}

public Location getLocalizacion() {
    return localizacion;
}

public void setLocalizacion(Location localizacion) {
    this.localizacion = localizacion;
}

public String getUrl() {
    return url;
}

public void setUrl(String url) {
    this.url = url;
}

}

在活动A中我使用此意图

Intent i = new Intent();
i.setAction(SELECCIONAR); // Activity B in the other project is ready to answer this Intent
startActivityForResult(i, LOCAL);

然后在活动B中,我发回对象:

Intent returnIntent = new Intent();
Bundle b = new Bundle();
b.putParcelable("seleccion", seleccion);
returnIntent.putExtras(b);
setResult(ListaEquipos.RESULT_OK,returnIntent);
finish();

最后得到对象,但是当我从bundle中获取parcelable对象时,我得到了异常:

@Override
protected void onActivityResult(int requestCode, int resultCode, Intent data) {

    data.setExtrasClassLoader(Equipo.class.getClassLoader());
    if (requestCode == LOCAL) {
        if(resultCode == InsertaEquipos.RESULT_OK){

            Bundle b = data.getExtras();
            b.setClassLoader(Equipo.class.getClassLoader());
            if (b != null)
                A = b.getParcelable("seleccion"); //EXCEPTION
        }
    }
}//onActivityResult

Logcat告诉我它找不到类:

  

引起:android.os.BadParcelableException:解组时的ClassNotFoundException:com.example.alvaro.listaequipos.Equipo

我认为这是因为它试图在该包中找到该类,而这是来自另一个项目。

任何人都可以帮助我吗?谢谢:))

0 个答案:

没有答案