2012-12-27 5 views
16

Ich versuche, den Zustand in meinem Fragment durch die Verwendung von Parcelable zu speichern.Was ist der Parameter für Parcel.readStringArray()?

Dies führt zu dem folgenden Code, wenn ich wünsche, das eine String-Array zurück zu bekommen, die ich in der Parcel gespeichert:

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

Jetzt braucht readStringArray einen Parameter, ein String[] ... Aber warum? Es könnte nur die Saiten geben, die ich darin gespeichert habe. Ich weiß nicht a priori, wie viele es waren, also ist das scheiße. :(

Die documentation sagt der folgende:

Das heißt, nichts

EDIT:. Wenn jemand das gleiche Problem: Ich landete writeBundle()/readBundle() mit und setzen meine String[] in die Bundle.

Antwort

9

Hier ist eine Implementierung auf dieser Methode von Android 4.1.2:

So schreibt es Werte zu gegebenem Array. Und gibt nichts zurück.

+0

Danke! Aber ... Warum geben sie nicht einfach ein neues Array zurück? – Maarten

+1

@Maarten weiß es nicht. Möglicherweise ist die Erstellung eines neuen Arrays langsamer. Außerdem habe ich eine zweite Version der 'readStringArray'-Methode in Quellen, die keine Argumente akzeptiert und Array zurückgibt. Aber ich sehe es nicht in doc und kann es nicht benutzen. –

+0

Hat es für Sie funktioniert? Ich denke, du solltest @hunyadym antworten, ich habe es versucht und es hat einfach für mich funktioniert. – Amt87

43

Verwenden Sie createStringArray() anstelle von readStringArray(String[]). Es wird das Array zurückgeben, das Sie benötigen.

+2

@Maarten Dies ist eine viel bessere ** Lösung ** für das Problem, aber * Nikita Beloglazov * 's Antwort enthält eine bessere ** Erklärung ** zum Problem. –