Android 接收ArraylistObject GetParcelableExtract-NullPointerException

Android 接收ArraylistObject GetParcelableExtract-NullPointerException,android,android-intent,android-activity,nullpointerexception,Android,Android Intent,Android Activity,Nullpointerexception,我不知道在android中如何在两个类别之间发送和接收以及arraylist对象。我在活动B中得到一个NullPointerException 活动A private ArrayList <String[][]> stringObjects2D = new ArrayList <String[][]> () ; Intent intent = new Intent(MainActivity.this, CalculationsActivity.class); i

我不知道在android中如何在两个类别之间发送和接收以及arraylist对象。我在活动B中得到一个NullPointerException

活动A

 private ArrayList <String[][]> stringObjects2D = new ArrayList <String[][]> () ; 
 Intent intent = new Intent(MainActivity.this, CalculationsActivity.class); 
 intent.putExtra("strObj2D", stringObjects2D );
private ArrayList stringObjects2D=new ArrayList();
意向意向=新意向(MainActivity.this、calculationActivity.class);
intent.putExtra(“strObj2D”,stringObjects2D);
活动B

 private ArrayList <String[][]> stringObjects2D;
 stringObjects2D = getIntent().getParcelableExtra("strObj2D");

 // just a check test if something is here. Here I get the NullPointerException
 System.out.println("size = " + stringObjects2D.size());
私有ArrayList stringObjects2D;
stringObjects2D=getIntent().getParcelableExtra(“strObj2D”);
//只要检查一下这里是否有东西。这里是NullPointerException
System.out.println(“size=“+stringObjects2D.size());
如果有人知道如何解决这个问题,那就太好了

谢谢

使用

stringObjects2D = (ArrayList<String[][]>) getIntent().getSerializableExtra("strObj2D");

原因是
字符串[][]
不可打包。请使用
ArrayList了解实现细节。

您可以创建一个实现
Parcelable
的类,并使用该类传递到目的地,以确保传递的是
Parcelable对象

示例:

    public class Sample implements Serializable {
    private ArrayList<String[][]> stringObjects2D; 
    public Sample() {
                    stringObjects2D = new ArrayList <String[][]> ();
        String [][] s = {{"1","1"},{"1","1"},{"1","1"},{"1","1"},{"1","1"}};
        stringObjects2D.add(s);
        stringObjects2D.add(s);
        stringObjects2D.add(s);
        stringObjects2D.add(s);
    }
    public ArrayList <String[][]> getArray(){
        return this.stringObjects2D;
    }
更新:

    public class Sample implements Serializable {
    private ArrayList<String[][]> stringObjects2D; 
    public Sample() {
                    stringObjects2D = new ArrayList <String[][]> ();
        String [][] s = {{"1","1"},{"1","1"},{"1","1"},{"1","1"},{"1","1"}};
        stringObjects2D.add(s);
        stringObjects2D.add(s);
        stringObjects2D.add(s);
        stringObjects2D.add(s);
    }
    public ArrayList <String[][]> getArray(){
        return this.stringObjects2D;
    }
第二项活动:

 Sample stringObjects2D;
     stringObjects2D = (Sample) getIntent().getSerializableExtra("strObj2D");

     // just a check test if something is here. Here I get the NullPointerException
     System.out.println("size = " + stringObjects2D.getArray().get(0)[0]);

我昨天试过了——坐了几个小时也没解决。如果我使用getSerializableExtra,我会得到一个ClassCastExecOption(不能从对象转换为字符串)好的,谢谢,我会在适当的时候研究这个问题,也许会接受它。我尝试了你的例子,结果完全一样。我忘了提到,我可以早些时候,如您所说,获取arraylist的大小,但不能忽略它(获取单个值)。相同的异常:ClassCastException(从对象[]到字符串[])。我尝试了以下方法:**System.out.println(“array=“+stringObjects2D.getArray().get(1)[0])**
 Sample stringObjects2D;
     stringObjects2D = (Sample) getIntent().getSerializableExtra("strObj2D");

     // just a check test if something is here. Here I get the NullPointerException
     System.out.println("size = " + stringObjects2D.getArray().get(0)[0]);