关于我的代码示例,如果一个Locable的变量为空,我应该怎么做?例如,现在如果l.getZoom()返回null,我就得到了NullPointerException。
@Override
public void writeToParcel(Parcel parcel, int arg1) {
parcel.writeInt(count);
for(Locable l:locableArr){
parcel.writeInt(l.getOriginId());
parcel.writeInt(l.getLocableType());
parcel.writeInt(l.getZoom());
parcel.writeDouble(l.getLatituda());
parcel.writeDouble(l.getLongituda());
parcel.writeString(l.getTitle());
parcel.writeString(l.getSnipet());
}
}谢谢!
发布于 2012-05-27 05:21:14
您可以使用Parcel.writeValue来封送具有空值的泛型对象。
发布于 2015-05-02 06:40:11
我使用的Parcelable类也有Integer和Boolean字段,这些字段可以为空。
我在使用泛型Parcel.writeValue方法时遇到了问题,特别是当我试图通过Parcel.readValue读回它的时候。我一直得到一个运行时异常,说它不能弄清楚包裹对象的类型。
最终,我通过使用带有类型转换的Parcel.writeSerializable和Parcel.readSerializable解决了这个问题,因为Integer和Boolean都实现了Serializable接口。read和write方法为您处理null值。
发布于 2012-12-21 04:39:33
这是我想出的安全编写字符串的解决方案:
private void writeStringToParcel(Parcel p, String s) {
p.writeByte((byte)(s != null ? 1 : 0));
p.writeString(s);
}
private String readStringFromParcel(Parcel p) {
boolean isPresent = p.readByte() == 1;
return isPresent ? p.readString() : null;
}https://stackoverflow.com/questions/5905105
复制相似问题