2013-01-23 20 views
1

我在使用谷歌地圖API, 我得出的兩個點(GeoPoint)成功路徑開發應用程序的方式來捆綁。Android的:如何把GeoPoint對象在onSavedInstanceState

而從縱向改爲橫向時, 的地圖將無效(因爲活性生命週期的),你知道嗎? 所以,我失去了兩點,即

我知道我們必須在方法onSavedInstanceState(Bundle outState)中保存兩點。 因此,我想保存兩個點GeoPoint)再次從縱向更改爲繪製到風景。

我不知道如何將GeoPoint納入那Bundle在那個方法。 請告訴我嗎?

問候!

回答

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]; 
     } 
    }; 
} 

然後,把它放在你的Bundlebundle.putParcelable("MYPOINT", geopointParcelable)