我有一个CustomAddress
类,它扩展了实现android.location.Address
的{{1}}类。
我正在尝试将Parcelable
工具CustomAddress
设置为,但在从包裹创建课程时遇到困难。从包裹创建Parcelable
时我想要的是首先填写超类CustomAddress
的所有字段,然后是我自己的字段。所以我实现了Address
字段:
CREATOR
但在我的public static final Parcelable.Creator<CustomAddress> CREATOR
= new Parcelable.Creator<CustomAddress>() {
public CustomAddress createFromParcel(Parcel in) {
return new CustomAddress(in);
}
public CustomAddress[] newArray(int size) {
return new CustomAddress[size];
}
};
创建者中,我无法致电CustomAddress(Parcel in)
,因为super(in)
中不存在android.location.Address
。我只能访问android.location.Address.CREATOR
。那么如何使用CREATOR
填写我的字段?
编辑:链接到Android Address
类https://developer.android.com/reference/android/location/Address.html
答案 0 :(得分:0)
这是一个类似的问题和Mark Murphy的优秀答案:https://stackoverflow.com/a/10841502/1140682
因此,在您的情况下,您将CustomAddress
扩展Address
(就像您已经做过的那样),在构造函数中调用super()
方法,然后从传递中读取您自己的属性Parcel
。必须在writeToParcel()
方法中完成相同的操作(同样的顺序),当然这里是将属性添加到宗地。