2012-12-27 16 views
16

Parcelableを使用して私のFragmentに状態を保存しようとしています。Parcel.readStringArray()のパラメータは何ですか?

次のコードにこのリード私はParcelableに保存された文字列配列を取り戻すしたい:

public MyObject createFromParcel(Parcel in) { 
      titles=in.readStringArray(???); 
} 

readStringArrayは、パラメータ、String[]を必要とする...しかし、なぜ?それは私がそれに格納されているストリングを与えるだけです。私は先験的に何があったのかわからないので、これはうんざりです。 :(

documentationは、次の言葉:

ある

、何も

EDIT:誰もが同じ問題を持っている場合:私はwriteBundle()/readBundle()を使用して入れてしまいました私のString[]Bundle

答えて

9

ここに実装ですAndroidのこの方法のon 4.1.2:

public final void readStringArray(String[] val) { 
    int N = readInt(); 
    if (N == val.length) { 
     for (int i=0; i<N; i++) { 
      val[i] = readString(); 
     } 
    } else { 
     throw new RuntimeException("bad array lengths"); 
    } 
} 

したがって、指定された配列に値を書き込みます。そして何も返さない。

+0

ありがとうございました!しかし、なぜ彼らは新しい配列を返しませんか? – Maarten

+1

@Maartenは分かりません。新しい配列を作成することが遅い可能性があります。また、私は 'readStringArray'メソッドの2番目のバージョンを、引数を取らず配列を返すソースに持っています。しかし私はそれをdocで見ることはできず、使うこともできません。 –

+0

それはあなたのために働いたのですか?私はあなたが@hunyadym答えを受け入れる必要があると思う私はそれを試してみて、それはちょうど私のために働いた。 – Amt87

43

readStringArray(String[])の代わりにcreateStringArray()を使用してください。必要な配列が返されます。

+2

@Maartenこれは、問題のはるかに優れた**ソリューション**ですが、* Nikita Beloglazov *の回答には問題の解説**が含まれています。 –

関連する問題