如何在Parcelable类中编写和读取org.joda.time.Date

时间:2014-05-13 19:15:00

标签: android jodatime parcelable

我正在创建一个实现Parcelable的类。

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();
}

3 个答案:

答案 0 :(得分:7)

您应该可以使用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());

答案 1 :(得分:2)

基于@artworkad注释,如果需要包含时区信息,则必须使用toString()和DateTime.parse():

写入包裹:

dest.writeString(mDateTime.toString());

从包裹中读取:

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

答案 2 :(得分:0)

将此代码设为kotlin:

写:

using

阅读:

out.writeSerializable(myDateObject)