4

これを行うと、null ポインター例外が発生します。

    private String[] foo;

    private void readFromParcel(Parcel in) {
        in.readStringArray(foo);
    }

最初に配列を割り当てる必要があるようです。しかし、それをどのくらいの大きさにするかをどうやって知るのですか?最初にサイズを書いてから、最初にサイズを読む必要がありますか? そしてwriteStringArray()、私のためにこれを処理する方法を持つことのポイントではありませんか?

Android ドキュメントから:

プリミティブ オブジェクトの生の配列の読み取りと書き込みにはさまざまな方法がありますが、通常は 4 バイト長の後にプリミティブ データ項目が書き込まれます。

したがって、カウントを自分で書き込むと、2 回書き込まれます。私がこれを管理する責任を負わない場合、何らかの方法でこれを行う必要があります。

4

2 に答える 2

5

これが直接的な答えではないことはわかっていますが、リスト ( ) をand のArrayList<String>代わりに使用できます。writeList()createStringArrayList()

Parcle#createStringArray()または、配列を取得するために使用できます。

于 2011-08-24T18:53:53.023 に答える
2

次のようなことをしなければならないと思います:

private String[] foo;
private void readFromParcel(Parcel in) {
        int cnt = in.readInt();
        foo = new String[cnt];
        in.readStringArray(foo);
    }

これは、書き出すときに配列のサイズを記録する必要があることを意味します。

于 2011-08-24T18:55:17.477 に答える