【发布时间】:2019-10-20 16:05:24
【问题描述】:
我想在 2 个 activity 之间传递一个 arraylist,但我遇到了问题
在FirstActivity 中ArrayList 不为空,但在SecondActivity 中为空,我不知道发生了什么
我的意图:
Intent intent = new Intent(mContext, NewContactActivity.class);
intent.putParcelableArrayListExtra("CONTACT_ARRAY", mData);
mContext.startActivity(intent);
我的SecondActivity:
Intent intent = getIntent();
ArrayList<Contact> lstContact = this.getIntent().getParcelableArrayListExtra("CONTACT_ARRAY");
edtPhone.setText(lstContact.get(0).getPhone());
我的联系班级:
public class Contact implements Parcelable {
private String id;
private String Name;
private String Fname;
private String Phone;
private String Email;
public Contact(String id, String Name, String Fname, String Phone, String Email) {
this.id = id;
this.Name = Name;
this.Fname = Fname;
this.Email = Email;
this.Phone = Phone;
}
public Contact(Parcel in) {
this.id = in.readString();
this.Name = in.readString();
this.Fname = in.readString();
this.Email = in.readString();
this.Phone = in.readString();
}
//Getter
public String getId() { return id; }
public String getName() {
return Name;
}
public String getFname() {
return Fname;
}
public String getEmail() {
return Email;
}
public String getPhone() {
return Phone;
}
//Setter
public void setName(String name) {
this.Name = name;
}
public void setFname(String fname) {
Fname = fname;
}
public void setEmail(String email) {
Email = email;
}
public void setPhone(String phone){ Phone = phone; }
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeString(id);
dest.writeString(Name);
dest.writeString(Fname);
dest.writeString(Phone);
dest.writeString(Email);
}
public static final Parcelable.Creator<Contact> CREATOR = new Parcelable.Creator<Contact>() {
public Contact createFromParcel(Parcel in)
{
return new Contact(in);
}
public Contact[] newArray(int size)
{
return new Contact[size];
}
};
}
我该如何解决这个问题? 非常感谢
【问题讨论】:
-
检查您在 SecondActivity 中的类型转换。
-
你能分享一下如何在列表中添加数据的代码
-
是的,我正在使用
ContentResolver和Cursor获取联系人数据到联系人列表 -
@jasonmomoa 您是否尝试通过查看您通过意图发送的额外数据以及您在其他活动中获得什么来调试此问题?如果没有一个答案有效,你可以试试这个,这对我很有帮助。
-
@deepakkumar 我试图将一个字符串变量从
FirstActivity传递给SecondActivity,这很完美,但使用ArrayList 不行。
标签: android android-intent parcelable