我想給一個類的對象 - 孩子的發送的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,所以我可以簡單地使用用於啓動活動的Android意向
public Intent putExtra (String name, Serializable value)
方法。然後我嘗試在活動的onCreate方法中讀回它
getIntent().getSerializableExtra(INTENT_EXTRA_DATA);
看起來很簡單,但它不起作用。我沒有得到我的TrainingLineBase類的對象,我得到
ArrayList<ArrayList<Double>>
這是它的繼承樹中的父項。它保持着與原始TrainingLineBase相同的數據。所以看起來序列化不太好。真實的數據被轉移,但類型不是。
這是Android中的錯誤還是我做錯了什麼?
更新:有一個相當簡單的方法來獲得工作解決方案。我可以將繼承權改爲所有權。 neww類被很好的序列化/反序列化:
public class TrainingLineBase implements TrainingLine, Serializable {
public ArrayList<ArrayList<Double>> mData;
// ....
您是否嘗試將其轉換爲TrainingLineBase,或者檢查 'getIntent()。getSerializableExtra(INTENT_EXTRA_DATA)instanceof TrainingLineBase'的結果? – GreyBeardedGeek 2015-03-08 22:24:41
你怎麼把這些數據? – 2015-03-08 22:26:13
Casting to TrainingLineBase會導致ClassCastException,因爲您無法將父項轉換爲子項。 – 2015-03-08 22:44:47