1

Google Map APIを使用してアプリケーションを開発しているところですが、成功した2つのポイント(GeoPointのパスを描画します。

また、縦向きから横向きに変更すると、マップは無効になります(アクティビティのライフサイクルのため)。だから、私はそのポイントを2つ失いました。

メソッドでそのポイントを2つ保存する必要があることはわかっていonSavedInstanceState(Bundle outState)ます。したがって、ポートレートからランドスケープに変更するときに再度描画するために、そのポイント( )を2つ保存します。GeoPoint

その方法でそれをどのように入れるGeoPointBundleのかわかりません。教えてください?

よろしく!

4

1 に答える 1

0

APIドキュメントによるGeopointと、緯度と経度の2つのパラメーターを持つコンストラクターがあります。両方の属性にゲッターがあります。したがって、それらを取得してに配置するBundleか、クラスを拡張してパーセル可能にするか、ラッパークラスを作成します。どちらのソリューションも問題なく機能します。

これを試してみてください、私はそれがうまくいくと思います。

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)

于 2013-01-23T08:41:27.730 に答える