Я хочу отправить объект класса - ребенок изОтправить ребенка ArrayList к Android деятельности
ArrayList<ArrayList<Double>>
к Android деятельности. Это мой класс:
package cz.honza.backpropagation.network.trainingset;
import java.io.Serializable;
import java.util.ArrayList;
import cz.honza.backpropagation.network.parser.Csv;
public class TrainingLineBase extends ArrayList<ArrayList<Double>> implements TrainingLine, Serializable {
private static final long serialVersionUID = -2777317734401540881L;
@Override
public String getEditorType() {
return Csv.SIMPLE;
}
}
Он реализует Serializable, так что я могу просто использовать
public Intent putExtra (String name, Serializable value)
метод Android Intent используется для запуска этой деятельности. Затем я попытаюсь прочитать его в методе onCreate Activity.
getIntent().getSerializableExtra(INTENT_EXTRA_DATA);
Выглядит просто, но это не работает. Я не получаю объект своего класса TrainingLineBase, получаю
ArrayList<ArrayList<Double>>
который является его родителем в дереве наследования. Он содержит те же данные, что и исходная TrainingLineBase. Поэтому кажется, что сериализация не работает. Реальные данные были перенесены, но тип класса не был.
Это ошибка в Android или я что-то неправильно делаю?
Обновление: Существует довольно простой способ получить рабочее решение. Я могу изменить наследование в собственность. СЖВЗ класс сериализации/десериализации хорошо:
public class TrainingLineBase implements TrainingLine, Serializable {
public ArrayList<ArrayList<Double>> mData;
// ....
Вы пробовали лить его в TrainingLineBase или проверяете результат 'getIntent(). GetSerializableExtra (INTENT_EXTRA_DATA) instanceof TrainingLineBase'? – GreyBeardedGeek
Как вы помещаете данные? –
Кастинг для TrainingLineBase вызывает ClassCastException, потому что вы не можете отдать родителя ребенку. –