无法通过intent.putExtra传递arraylist

时间:2015-04-21 12:50:45

标签: android android-activity arraylist

我正在尝试使用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);

谁能告诉我我做错了什么?谢谢你的帮助!

2 个答案:

答案 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));
        }

但是气馁