我正在尝试将3D-doublearray传递给另一个活动。我不知道为什么我会得到NullpointerException?缺少什么?
MainActivity
Intent intent = new Intent(this, DataActivity.class);
Bundle mBundle = new Bundle();
mBundle.putSerializable("list", output_data);
intent.putExtras(mBundle);
startActivity(intent);
DataActivity(reveiver)
Intent intent = new Intent();
double[][][] params = (double[][][]) intent.getExtras().getSerializable("list");
我确信已经在MainActivity中分配了3d数组。我测试过了!
如果有人对此有任何解决方案并且可以回答为什么我会得到NullPointerException,那会很高兴。
(编辑:行double [] [] [] params = ...)的NullpointerException
答案 0 :(得分:3)
我很确定double[][][]
没有实现Serializable
。你能做的就是自己创建这样的课程:
public class MyArrayWrapper implements Serializable {
private double[][][] arr;
public MyArrayWrapper(double[][][] value) {
arr = value;
}
public double[][][] getArray() {
return arr;
}
}
然后,您实例化该包装类,并将其作为可序列化。然后在获得序列化时,你可以这样做:
MyArrayWrapper wrap = (MyArrayWrapper) intent.getExtras().getSerializable("list");
double[][]][] myArray = wrap.getArray();
希望这有帮助!
答案 1 :(得分:1)
也许您需要一个实现可序列化的类?
Passing data through intent using Serializable
在此示例中,他们使用自定义类和List<>在一个包中序列化。您可以在里面创建一个包含3D数组的类吗?