我对 Parcelable 对象和在活动之间传递它有一点问题。
我有两个不同的应用程序,Activity A 通过带有 startActivityForResult 的 Intent 请求 Activity B,B Activity 发回两个项目中定义的自定义对象(C 类)。这个 C 类是 parcelable 并且它定义了所有方法,但是当我尝试取回存储在包中的那个对象时,我得到了那个异常。
这是我的 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;
}
}
在 Activity AI 中使用这个 Intent
Intent i = new Intent();
i.setAction(SELECCIONAR); // Activity B in the other project is ready to answer this Intent
startActivityForResult(i, LOCAL);
然后在 Activity BI 中发回对象:
Intent returnIntent = new Intent();
Bundle b = new Bundle();
b.putParcelable("seleccion", seleccion);
returnIntent.putExtras(b);
setResult(ListaEquipos.RESULT_OK,returnIntent);
finish();
最后取回对象,但是当我从捆绑包中获取可打包对象时,我得到了异常:
@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
我认为这是因为它试图在该包中找到该类,而那是来自另一个项目的。
有谁能够帮我?谢谢 :)