将3D数组传递给Android中的Activity

时间:2015-06-01 20:32:01

标签: android android-intent android-activity multidimensional-array

我正在尝试将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

2 个答案:

答案 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数组的类吗?