2014-05-13 44 views
4

我正在創建一個實現Parcelable類的類。如何在Parcelable類中編寫和讀取org.joda.time.Date

public class PosicaoResumoMobile implements Parcelable { 

private Float _Latitude; 
private Float _Longitude; 
private org.joda.time.DateTime _DataHora; 
    ... 

但是這個類有一個類型爲org.joda.time.DateTime的屬性。 如何在以下實現Parcelable的方法中編寫此屬性,因爲它不可能是out.writeDateTime(_DataHora)。

@Override 
public void writeToParcel(Parcel out, int flags) 
{ 
    //TODO: How to write org.joda.time.DateTime 
    out.writeFloat(_Latitude); 
    out.writeFloat(_Longitude); 
} 

和閱讀

private PosicaoResumoMobile(Parcel in){ 
    //TODO: How to read org.joda.time.DateTime 
    Float latitude = in.readFloat(); 
    Float longitude = in.readFloat(); 
} 

回答

6

你應該能夠使用以獲得毫秒getMillis()

// to write to parcel 
out.writeFloat(_Latitude); 
out.writeLong(jodaDTInstance.getMillis()) 

// to read from parcel 
Float longitude = in.readFloat(); 
jodaDTInstance = new DateTime(in.readLong()); 
+0

好了,但是包括在'DateTime'時區信息將會丟失這種方式(和年代,太)。 –

+0

@MenoHochschild與傳遞包含時區的日期字符串相同的方式。 –

1

基於@artworkad評論,如果您需要包括時區信息,你將有要使用toString()和DateTime.parse():

要寫入包裹:

dest.writeString(mDateTime.toString()); 

從包裹閱讀:

mDateTime = DateTime.parse(in.readString());