андроид:проблема с сериализуемым объектом, введенным в действие

StackOverflow https://stackoverflow.com/questions/1548489

Вопрос

Привет, у меня есть проблемы с классом, который я хочу пройти в намерениях, поместив его в Putextras () его сериализуемо, а код выглядит так:

public abstract class ObjectA extends ArrayList<ObjectA> implements java.io.Serializable{...}

public class ObjectB extends ObjectA {...}


...
Bundle extras = new Bundle();
extras.putSerializable("blabla", ObjectB);
intent.putExtras(extras);

...

Object y = getIntent().getExtras().get("blabla");

проблема в том, что y теперь является ArrayList, а не ObjectB, поэтому я не могу его привести.если я изменю код на

public class ObjectB implements java.io.Serializable {...}

это работает нормально

Это было полезно?

Решение

Реализовав в своем классе как java.util.List, так и java.io.Serializable, вы запустили это ошибка андроида.

Другие советы

Я подозреваю, что происходит следующее: поскольку вы не объявляете ObjectB сериализуемым, он «возвращается» к самому последнему родительскому объекту.Поэтому, когда вы помещаете его в Bundle, вы на самом деле не добавляете ObjectB, а возвращает ObjectB обратно в ArrayList.

Я думаю, вам придется использовать второй («работает нормально») код.

Как вы объявляете ObjectB перед передачей его в пакет?Насколько я понимаю ваш вопрос, вы не получаете ошибки при передаче пакета, а только при его удалении.Попробуйте получить ObjectB в тип ObjectB следующим образом:

ObjectB y = (ObjectB) getIntent().getExtras().get("blabla");

А ObjectA в ArrayList должен реализовать интерфейс Parcelable.После этого вы можете поместить свои массивы в намерение и получить их в другом действии.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top