List <String>readStringArray в Parcelable - PullRequest
       9

List <String>readStringArray в Parcelable

10 голосов
/ 23 февраля 2012

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

Моя проблема заключается в том, что я хочу выполнить Parcel Array / List / ArrayList (я пробовал их все).

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

List<String>

и

out.writeStringList()

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

Eclipse предполагает наличие

in.readStringList(List<String> list)

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

Что мы должны положить в ()?

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

Ответы [ 2 ]

22 голосов
/ 23 февраля 2012

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

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

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

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

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

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

19 голосов
/ 26 сентября 2015

Написать посылку:

out.writeStringList(yourStringList);

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

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