Я пытаюсь написать массив объектов, реализующих Parcelable в Parcel с использованием writeParcelableArray.
Объекты, которые я пытаюсь написать, определены (как и следовало ожидать) как:
public class Arrival implements Parcelable {
/* All the right stuff in here... this class compiles and acts fine. */
}
И я пытаюсь записать их в посылку с помощью:
@Override
public void writeToParcel(Parcel dest, int flags) {
Arrival[] a;
/* some stuff to populate "a" */
dest.writeParcelableArray(a, 0);
}
Когда Eclipse пытается скомпилировать это, я получаю сообщение об ошибке:
Несоответствие привязки: универсальный метод writeParcelableArray (T [], int) типа Parcel неприменим для аргументов (Arrival [], int). Выведенный тип Arrival не является допустимой заменой ограниченного параметра ‹T extends Parcelable>
Я совершенно не понимаю это сообщение об ошибке. Parcelable
- это интерфейс (а не класс), поэтому вы не можете его расширять. У кого-нибудь есть идеи?
ОБНОВЛЕНИЕ: у меня почти такая же проблема при помещении ArrayList
из Parcelable
s в Intent
:
Intent i = new Intent();
i.putParcelableArrayListExtra("locations", (ArrayList<Location>) locations);
дает:
Метод putParcelableArrayListExtra (String, ArrayList ‹? Extends Parcelable>) в типе Intent не применим для аргументов (String, ArrayList‹ Location>)
Это может быть связано с тем, что Location
был классом, над которым я работал выше (который является оболочкой для Arrival
s), но я так не думаю.