ArrayList <Object>使用getSerializable问题进行第二个活动

时间:2019-11-15 00:33:17

标签: android android-studio arraylist

在第一个活动中,我有一个ArrayList,必须将其传递给第二个活动。

这是第一个活动:

public ArrayList<ItemContact> selectedContacts = new ArrayList<>(); //filled in the rest of the code

Intent intent = new Intent(this, SummaryActivity.class);
Bundle bundle = new Bundle();
bundle.putSerializable("selectedContacts", selectedContacts);
intent.putExtra("selectedContacts", bundle);
startActivity(intent);

在第二个活动中:

ArrayList<ItemContact> selectedContacts = new ArrayList<>();

selectedContacts = (ArrayList<ItemContact>)getIntent().getExtras().getSerializable("selectedContacts") ;

问题是第二个活动中的selectedContacts始终为null 我该如何解决?

编辑:ItemContact已经实现了可序列化,但仍然无法正常工作

2 个答案:

答案 0 :(得分:2)

您的对象应实现Serializable

class ItemContact implements Serializable {

  ......
} 

第一次活动

    public ArrayList<ItemContact> selectedContacts = new ArrayList<>(); 

    Intent intent = new Intent(this, SummaryActivity.class);
    Bundle bundle = new Bundle();

    bundle.putSerializable("selectedContacts", selectedContacts);
    intent.putExtras(bundle);
    startActivity(intent);

第二次活动

    ArrayList<ItemContact> selectedContacts = new ArrayList<>();

    Intent intent = getIntent();
    Bundle bundle = intent.getExtras();

    selectedContacts = (ArrayList<ItemContact>)bundle.getSerializable("selectedContacts");

希望这会有所帮助。

答案 1 :(得分:0)

使用Parcelable而非序列化可提高速度,并通过活动传递多个对象数据。

class ItemContact implements Parcelable {

 ......
} 

第一次活动

public ArrayList<ItemContact> selectedContacts = new ArrayList<>(); 
Intent intent = new Intent(this, SummaryActivity.class);
intent.putParcelableArrayListExtra("selectedContacts", selectedContacts);
startActivity(intent);

第二次活动

ArrayList<ItemContact> selectedContacts = new ArrayList<>();

Intent intent = getIntent();

selectedContacts = (ArrayList<ItemContact>)intent.getParcelableArrayListExtra("selectedContacts");

如果要序列化,请使用以下代码。用Serializable实现该类。

第一次活动

public ArrayList<ItemContact> selectedContacts = new ArrayList<>(); 
Intent intent = new Intent(this, SummaryActivity.class);
intent.putExtra("selectedContacts", selectedContacts);
startActivity(intent);

第二次活动

ArrayList<ItemContact> selectedContacts = new ArrayList<>();

Intent intent = getIntent();

selectedContacts = (ArrayList<ItemContact>)intent.getSerializableExtra("selectedContacts");