我有一个具有内部类的Custom对象,整个项目需要是Parcelable,
public class FechasReservasZonas implements Parcelable {
public String hora;
public List<Zona> listaZonas;
public FechasReservasZonas(){};
public FechasReservasZonas(Parcel in){readFromParcel(in);};
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(hora);
dest.writeList(listaZonas);
}
public void readFromParcel(Parcel in){
hora = in.readString();
in.readList(listaZonas,Zona.class.getClassLoader());
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public FechasReservasZonas createFromParcel(Parcel in) {
return new FechasReservasZonas(in);
}
public FechasReservasZonas[] newArray(int size) {
return new FechasReservasZonas[size];
}
};
public class Zona implements Serializable{
public int IDZona;
public String NombreZona;
}
}
它没有给出任何错误,但当我尝试将其作为ParcelableArray时,它会给我一个错误
public static ReservasCuadranteFragment newInstance(ArrayList<FechasReservasZonas> fechas,String nombre) {
ReservasCuadranteFragment fragment = new ReservasCuadranteFragment();
Bundle args = new Bundle();
// THIS LINE GIVE ERROR
args.putParcelableArray(ARG_PARAM1, fechas);
args.putString(ARG_PARAM2, nombre);
fragment.setArguments(args);
return fragment;
}
错误:
Error:(49, 45) error: incompatible types: ArrayList<FechasReservasZonas> cannot be converted to Parcelable[]
答案 0 :(得分:4)
这是因为fechas
是一个ArrayList而不是FechasReservasZonas
的数组。在这种情况下,您应该使用
putParcelableArrayList
代替putParcelableArray
Here您可以找到文档