我正在使用Google Map API开发应用程序,
我绘制两个点(GeoPoint
)成功的路径。
从纵向转换为横向时, 地图将无效(因为活动生命周期),你知道吗? 所以,我失去了两个点。
我知道我们必须在方法 onSavedInstanceState(Bundle outState)
中保存两个点。
因此,当从纵向更改为横向时,我想要再次保存两个(GeoPoint
)用于绘制。
我不知道如何将GeoPoint
放入该方法中的Bundle
。
请告诉我?
问候!
答案 0 :(得分:0)
API docs告诉我Geopoint
有一个带有两个参数的构造函数:纬度,经度。这两个属性都有getter。因此,要么获取它们并将它们放在Bundle
中,要么扩展类和make it parcellable,或者创建一个包装类。两种解决方案都可以正常工作。
试试这个,我怀疑它会正常工作。
public class ParcelableGeoPoint implements Parcelable {
private GeoPoint point;
public ParcelableGeoPoint(int lat, int lon){
point = new GeoPoint(lat, lon);
}
public ParcelableGeoPoint(Parcel in){
int[] data = new int[2];
in.readIntArray(data);
point = new GeoPoint(data[0], data[1]);
}
public int describeContents(){
return 0;
}
public GeoPoint unwrap() {
return point;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeIntArray(new int[] {point.getLat(), point.getLon()});
}
public static final Parcelable.Creator CREATOR = new Parcelable.Creator() {
public ParcelableGeoPoint createFromParcel(Parcel in) {
return new ParcelableGeoPoint(in);
}
public ParcelableGeoPoint[] newArray(int size) {
return new ParcelableGeoPoint[size];
}
};
}
然后,使用Bundle
bundle.putParcelable("MYPOINT", geopointParcelable)