【问题标题】:Pass 3D-array to Activity in Android将 3D 数组传递给 Android 中的 Activity
【发布时间】:2015-08-15 11:00:53
【问题描述】:

我正在尝试将 3D-doublearray 传递给另一个活动。我不知道为什么我得到 NullpointerException?缺少什么?

主活动

 Intent intent = new Intent(this, DataActivity.class);
 Bundle mBundle = new Bundle();
 mBundle.putSerializable("list", output_data);
 intent.putExtras(mBundle);
 startActivity(intent);

DataActivity(接收者)

 Intent intent = new Intent();
 double[][][] params = (double[][][]) intent.getExtras().getSerializable("list");

而且我确定 3d 数组已经在 MainActivity 中分配。我已经测试过了!

如果有人对此有任何解决方案并且可以回答我为什么会收到 NullPointerException,我会很高兴。

(编辑:NullpointerException 在 double[][][] params = ... 行)

【问题讨论】:

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


    【解决方案1】:

    我很确定 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();
    

    希望这会有所帮助!

    【讨论】:

    • 谢谢明天睡一觉后试试这个,然后可能会接受:-)
    【解决方案2】:

    也许您需要一个实现可序列化的类?

    Passing data through intent using Serializable

    在这个例子中,他们使用自定义类和 List 在一个包中序列化。你可以创建一个里面有 3D 数组的类吗?

    【讨论】:

      猜你喜欢
      • 2012-10-02
      • 2012-04-14
      • 1970-01-01
      • 2020-11-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-11-27
      • 1970-01-01
      相关资源
      最近更新 更多