Android 接收ArraylistObject GetParcelableExtract-NullPointerException
我不知道在android中如何在两个类别之间发送和接收以及arraylist对象。我在活动B中得到一个NullPointerException 活动AAndroid 接收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
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]);