我正在尝试使用intent.putExtra将ArrayList<driver>
传递给新活动,但我收到此错误:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name =com.example.irinab.licenta3.CustomerAccount$driver);
驱动程序是我当前活动中已经实现Serializable的内部类,所以我不明白为什么我收到此错误。 这是驱动程序类的代码:
private class driver implements Serializable
{
private final String name;
private final boolean available;
driver(String nume, boolean av)
{
this.name = nume;
this.available = av;
}
}
这是意图代码的一部分:
Intent startShowListIntent = new Intent(CustomerAccount.this, ShowList.class);
startShowListIntent.putExtra("id",ID);
startShowListIntent.putExtra("type",type);
startShowListIntent.putExtra("drivers",online_drivers);
startActivity(startShowListIntent);
谁能告诉我我做错了什么?谢谢你的帮助!
答案 0 :(得分:0)
Android意图不支持传递可序列化的arraylist。你应该实现parcelable,因为支持parcelable arraylist。
答案 1 :(得分:0)
这是您的MainActivity
ArrayList<Model> arrmodel = new ArrayList<Model>();
Model m = new Model();
Model n = new Model();
arrmodel.add(m);
arrmodel.add(n);
Bundle b = new Bundle();
for(int i = 0;i<arrmodel.size();i++){
b.putSerializable("ss"+i, arrmodel.get(i));
}
b.putInt("size", arrmodel.size());
Intent intent = new Intent(MainActivity.this,SecondActivity.class);
intent.putExtra("bundle", b);
startActivity(intent);
这是你的SecondActivity
Bundle value=getIntent().getExtras().getBundle("bundle");
ArrayList<Model> arrmodelArrayList = new ArrayList<Model>();
for(int i = 0;i<value.getInt("size");i++){
arrmodelArrayList.add((Model) value.getSerializable("ss"+i));
}
但是气馁