我正在使我的对象可分割,这样我就可以将它与 Intent
一起使用s。我得到了 NullPointerException
收到后,我正在阅读对象的内容。最准确的是我的ArrayList<String>
的内容。当迭代我的 ArrayList<String>
时它有null
所有位置的值(value),因此我的 NullPointerException
.
这是我的 Parcelable
类:
public class PhoneBackup implements Parcelable{
public Integer id;
public Long ts;
public String device_name;
public String device_manufacturer;
public String device_model;
public Integer backup_contacts_count;
public String description;
public ArrayList<String> backup_contacts;
public PhoneBackup()
{
}
public PhoneBackup(Parcel pc){
// backup_contacts = new ArrayList<String>(); // Tried this way, still NPE
id = pc.readInt();
ts = pc.readLong();
device_name = pc.readString();
device_manufacturer = pc.readString();
device_model = pc.readString();
backup_contacts_count = pc.readInt();
description = pc.readString();
// pc.readStringList(backup_contacts); // Tried this way, still NPE
backup_contacts = pc.createStringArrayList();
}
// (getters and setters)
@Override
public int describeContents() {
return 0;
}
@Override
public void writeToParcel(Parcel dest, int flags) {
dest.writeInt(id);
dest.writeLong(ts);
dest.writeString(device_name);
dest.writeString(device_manufacturer);
dest.writeString(device_model);
dest.writeInt(backup_contacts_count);
dest.writeString(description);
dest.writeList(backup_contacts);
}
/** Static field used to regenerate object, individually or as arrays */
public static final Parcelable.Creator<PhoneBackup> CREATOR = new Parcelable.Creator<PhoneBackup>() {
public PhoneBackup createFromParcel(Parcel pc) {
return new PhoneBackup(pc);
}
public PhoneBackup[] newArray(int size) {
return new PhoneBackup[size];
}
};
NullPointerException
和我的backup_contacts
在一起。但是backup_contacts
大小正确,但内容均为 null
因为我需要阅读 backup_contacts
的内容使用get(position)
我收到 null
值而不是 String
.
问题是,为什么是 Parcelable
将空值传递给 ArrayList<String>
而不是他真正的弦乐?我该如何修复它?
最佳答案
要读取列表,应该是
backup_contacts = new ArrayList<String>();
in.readList(backup_contacts, null);
Here是文档。
createStringArrayList 的文档说:
Read and return a new ArrayList containing String objects from the parcel that was written with writeStringList(List)
关于java - Parcelable - ArrayList<String> NullPointerException,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24433603/