Каков параметр Parcel.readStringArray()?
Я пытаюсь сохранить состояние в Fragment
с помощью Parcelable
.
Это приведет к следующему коду, когда я хочу вернуть массив String, который я сохранил в Parcelable:
public MyObject createFromParcel(Parcel in) {
titles=in.readStringArray(???);
}
Теперь readStringArray
нужен параметр, a String[]
... Но почему? Он мог бы просто передать строки, которые я сохранил в нем. Я не знаю априори, сколько их было, так что это отстой.: (
В документации говорится следующее:
То есть ничего.
EDIT: Если у кого-то такая же проблема: я закончил использование writeBundle()
/readBundle()
и поместил мой String[]
в Bundle
.
Ответы
Ответ 1
Вот реализация этого метода с Android 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");
}
}
Таким образом, он записывает значения в заданный массив. И ничего не возвращает.
Ответ 2
Используйте createStringArray()
вместо readStringArray(String[])
. Он вернет массив, в котором вы нуждаетесь.