0
나는 하나의 클래스를 parcellable로 만들려고 노력하고 있지만, Joda Time Period 객체를 직렬화 가능한 것으로 읽는 동안 NPE가 던져진다.Joda 시간과 LocalDate를 소포에 넣으시겠습니까?
코드 :
private Event(Parcel in) {
this.id = in.readLong();
this.scheduleId = in.readLong();
this.entryId = in.readLong();
this.time = (Period) in.readSerializable(); // NPE in this line.
}
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel out, int flags) {
out.writeLong(id);
out.writeLong(scheduleId);
out.writeLong(entryId);
out.writeSerializable(time);
}
public static final Parcelable.Creator<Event> CREATOR
= new Parcelable.Creator<Event>() {
public Event createFromParcel(Parcel in) {
return new Event(in);
}
public Event[] newArray(int size) {
return new Event[size];
}
};
로그 캣 :
09-22 22:48:47.929 32708-32708/com.vibhinna.cubs E/AndroidRuntime﹕ FATAL EXCEPTION: main
Process: com.vibhinna.cubs, PID: 32708
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.vibhinna.cubs/com.vibhinna.cubs.ui.EventActivity}: java.lang.NullPointerException
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2195)
.....
Caused by: java.lang.NullPointerException
at java.io.ByteArrayInputStream.<init>(ByteArrayInputStream.java:60)
at android.os.Parcel.readSerializable(Parcel.java:2210)
at com.vibhinna.cubs.engine.Event.<init>(Event.java:110)
at com.vibhinna.cubs.engine.Event.<init>(Event.java:10)
at com.vibhinna.cubs.engine.Event$1.createFromParcel(Event.java:251)
at com.vibhinna.cubs.engine.Event$1.createFromParcel(Event.java:249)
at android.os.Parcel.readParcelable(Parcel.java:2104)
at android.os.Parcel.readValue(Parcel.java:2013)
......
이 원인이 무엇 내가 그것을 어떻게 해결할 수 있습니다?
NPE는 이전에 행에서 수행 한 createTypedArray의 일부 인공물 때문이었습니다. 죄송합니다. Period 객체를 작성하고 읽는 것과 관련하여이 코드를 게시하지 않았으므로 방금 time.toString()을 수행했습니다. 그것을 ISO8601 형식 문자열로 변환하고,'new period (in.readstring()) '을 사용하여 다시 변환 할 수 있습니다. 이것이 가장 효율적인 방법이라고 생각합니다. –