import android.os.Parcel;
import android.os.Parcelable;
public class MClass implements Parcelable {
private byte[] _byte;
public MClass() {
}
public MClass(Parcel in) {
readFromParcel(in);
}
public byte[] get_byte() {
return _byte;
}
public void set_byte(byte[] _byte) {
this._byte = _byte;
}
public int describeContents() {
return 0;
}
public void writeToParcel(Parcel dest, int flags) {
dest.writeByteArray(_byte);
}
public void readFromParcel(Parcel in) {
in.readByteArray(_byte); //LOE - Line Of Exception
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public MClass createFromParcel(Parcel in) {
return new MClass(in);
}
public MClass[] newArray(int size) {
return new MClass[size];
}
};
}
每当我要检索以下数组中的字节时,它都会返回NullPointerException
的异常。谁能说出问题是什么?我想要做的是将下载的图像字节从一个活动传输到另一个活动。
答案 0 :(得分:66)
在读取parcel时,永远不会初始化_byte数组,因此它为null。
我要做的是,在编写包时,存储字节数组的长度,后跟实际的字节数组。读取包时,首先读取长度并将_byte数组初始化为该大小的新数组,然后读入字节数组。
代码已从评论中移除
写作......
dest.writeInt(_byte.length);
dest.writeByteArray(_byte);
并且在阅读中......
_byte = new byte[in.readInt()];
in.readByteArray(_byte);
答案 1 :(得分:12)
没有存储字节数组长度的更短解决方案:
dest.writeByteArray(byteArray);
byteArray = in.createByteArray();