Список <String> readStringArray в Parcelable

Большая часть моего Parcelable работает; Простые вещи, такие как out.writeString, out.writeInt, in.readString() и т.д. Работают отлично.

Моя проблема в том, когда я хочу Parcel Array/List/ArrayList (я пробовал их все).

В настоящее время я пытаюсь:

List<String>

и

out.writeStringList()

отлично работает.

Eclipse предполагает, что существует

in.readStringList(List<String> list)

чтобы прочитать эти данные. Но это не делает это для меня.

Что мы должны помещать в()?

Я ничего не пробовал, с результатом "Добавить аргумент в соответствие..." Я пробовал null, ссылаюсь на getter среди других; которые все возвращают ошибку "не могут преобразовать из void в List"

Я не могу найти что-либо в Android Developer об этом.

Может ли кто-нибудь помочь?

Спасибо

Dave

Ответ 1

'не может преобразовать из void в List'

Из этой ошибки кажется, что вы пытаетесь присвоить возвращаемый тип метода readStringList(...) переменной List<T>. Другими словами: возможно, вы пишете что-то вроде:

List<String> stringList = in.readStringList(stringList)

? readStringList(...) возвращает пустоту, так что это может быть то, о чем жалуется Eclipse. Фактически вы должны не пытаться получить тип возвращаемого значения из метода void - в этом случае вам нужно указать переменную, для которой результат должен быть назначен как параметр. Следовательно, этого должно быть достаточно:

List<String> stringList = null;
in.readStringList(stringList)

Кстати, если вы реализуете Parcelable, чтобы иметь возможность передавать относительно простые объекты данных между действиями (с использованием Intents), подумайте об использовании интерфейса Serializable вместо этого - это сэкономит вам массу работы, особенно если вам нужно повторить один и тот же процесс для нескольких объектов.

Ответ 2

Пишите на посылку:

out.writeStringList(yourStringList);

Читать с посылки

List<String> newList = in.createStringArrayList();