1

Parcelableを実装するクラスInfoに空のwriteToParcel()メソッドがあり、Bundle.putParcelableArrayList()およびBundle.getParcelableArrayList()メソッドがArrayList< Info>で引き続き機能する場合はどうなるか知っています。

public class Info implements Parcelable
{
    public int row;
    public int column;

    public int describeContents()
    {
        return 0;
    }

    public void writeToParcel(Parcel out, int flags)
    {  
        // Left empty!
    }
}

それで、問題はなぜですか?API ドキュメントや書籍の指示に従って、本当にwriteToParcelメソッドを実装する必要があるのはいつですか?

4

1 に答える 1

1

Android Bundle クラスは、IPC マーシャリング中に従うのと同じプロトコルには従いません。リフレクションを通じて、Bundle を実装するクラスは、Parcelable オブジェクトを独自の内部マッピングに読み書きするだけです。したがって、Parcelable 派生クラスで定義したプロパティはすべて使用されます。

反対に、IPC マーシャリング プロトコルを使用している場合 (たとえば、あるアクティビティから別のアクティビティに Info オブジェクトを渡す場合) は、特定の writeToParcelable メソッドと適切なコンストラクタを実装する必要がある場合です。

于 2013-10-02T09:26:38.893 に答える