Каков параметр Parcel.readStringArray()? - программирование
Подтвердить что ты не робот

Каков параметр Parcel.readStringArray()?

Я пытаюсь сохранить состояние в Fragment с помощью Parcelable.

Это приведет к следующему коду, когда я хочу вернуть массив String, который я сохранил в Parcelable:

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

Теперь readStringArray нужен параметр, a String[]... Но почему? Он мог бы просто передать строки, которые я сохранил в нем. Я не знаю априори, сколько их было, так что это отстой.: (

В документации говорится следующее:

То есть ничего.

EDIT: Если у кого-то такая же проблема: я закончил использование writeBundle()/readBundle() и поместил мой String[] в Bundle.

4b9b3361

Ответ 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[]). Он вернет массив, в котором вы нуждаетесь.