2

を実装するCustomAddressクラスを拡張するクラスがあります。android.location.AddressParcelable

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.Addressandroid.location.Address.CREATORCREATOR

Address編集: Androidクラスへのリンクhttps://developer.android.com/reference/android/location/Address.html

4

1 に答える 1

0

同様の質問とMark Murphyの優れた回答があります:https://stackoverflow.com/a/10841502/1140682

したがって、あなたの場合は、 (すでに行っているように)CustomAddress拡張し、コンストラクターでメソッドをAddress呼び出してsuper()から、渡された から独自の属性を読み取りますParcel。メソッドで同じことを(同じ順序で)行う必要がありwriteToParcel()ます。もちろん、ここでは属性を区画に追加します。

于 2013-04-05T01:38:42.877 に答える