Java 包裹-ArrayList<;字符串>;空指针异常
我正在将我的对象包裹起来,这样我就可以有Java 包裹-ArrayList<;字符串>;空指针异常,java,android,parcelable,Java,Android,Parcelable,我正在将我的对象包裹起来,这样我就可以有Intents使用它。我收到一个NullPointerException时,我正在读取对象的内容。最准确的是我的ArrayList的内容。当在myArrayList上迭代时,它在所有位置都有null值,因此myNullPointerException 这是我的Parcelable课程: public class PhoneBackup implements Parcelable{ public Integer id; public Long ts; pu
Intent
s使用它。我收到一个NullPointerException
时,我正在读取对象的内容。最准确的是我的ArrayList
的内容。当在myArrayList上迭代时,它在所有位置都有null
值,因此myNullPointerException
这是我的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];
}
};
public类PhoneBackup实现可打包{
公共整数id;
公共长征;
公共字符串设备名称;
公共字符串设备制造商;
公共字符串设备_模型;
公共整数备份\u联系人\u计数;
公共字符串描述;
公共阵列列表备份联系人;
公用电话备份()
{
}
公用电话备份(包裹pc){
//backup_contacts=new ArrayList();//尝试了这种方法,仍然是NPE
id=pc.readInt();
ts=pc.readLong();
设备名称=pc.readString();
设备制造商=pc.readString();
device_model=pc.readString();
备份_联系人_计数=pc.readInt();
description=pc.readString();
//pc.readStringList(备份联系人);//尝试了这种方法,仍然是NPE
backup_contacts=pc.createStringArrayList();
}
//(接球手和接球手)
@凌驾
公共int描述内容(){
返回0;
}
@凌驾
公共无效写入包裹(包裹目的地,内部标志){
目的地写入(id);
目的地记录(ts);
目的写入目录(设备名称);
目的地记录(设备制造商);
目的写入限制(设备型号);
目的地写入(备份联系人计数);
目的地记录(说明);
目标写入列表(备份联系人);
}
/**用于单独或作为数组重新生成对象的静态字段*/
public static final Parcelable.Creator=新建Parcelable.Creator(){
公用电话备份createFromParcel(Parcel pc){
返回新的电话备份(pc);
}
公用电话备份[]新阵列(整数大小){
返回新的PhoneBackup[大小];
}
};
NullPointerException
与我的backup\u联系人一起出现。但是backup\u联系人的大小正确,但是容器都是null
,因为我需要使用get(position)读取backup\u联系人的内容
我收到一个null
值,而不是字符串
问题是,为什么Parcelable
向ArrayList
传递空值,而不是实际的字符串?我如何修复它?要读取它应该是的列表
backup_contacts = new ArrayList<String>();
in.readList(backup_contacts, null);
backup_contacts=new ArrayList();
in.readList(备份联系人,空);
是文档
createStringArrayList
的文档说明:
从中读取并返回包含字符串对象的新ArrayList
使用writeStringList(列表)写入的包裹
要阅读列表,它应该是
backup_contacts = new ArrayList<String>();
in.readList(backup_contacts, null);
backup_contacts=new ArrayList();
in.readList(备份联系人,空);
是文档
createStringArrayList
的文档说明:
从中读取并返回包含字符串对象的新ArrayList
使用writeStringList(列表)写入的包裹
我认为问题可能在于写信给包裹:
dest.writeList(backup_contacts);
应该是
backup_contacts = new ArrayList<String>();
in.readList(backup_contacts, null);
dest.writeStringList(backup_contacts);
API中添加的公共最终作废writeStringList(List val)
一级
将包含字符串对象的列表展平到地块中,位于
如果需要,当前dataPosition()和不断增长的dataCapacity()。它们可以
稍后将使用createStringArrayList()或
readStringList(列表)
我认为问题可能在于写信给包裹:
dest.writeList(backup_contacts);
应该是
backup_contacts = new ArrayList<String>();
in.readList(backup_contacts, null);
dest.writeStringList(backup_contacts);
API中添加的公共最终作废writeStringList(List val)
一级
将包含字符串对象的列表展平到地块中,位于
如果需要,当前dataPosition()和不断增长的dataCapacity()。它们可以
稍后将使用createStringArrayList()或
readStringList(列表)
如果出现异常,请始终在问题中包含logcat。我理解您的评论,但stacktrace在这里是毫无用处的,因为它指向我的应用程序方法,而没有提到我开发的库的PhoneBackup
类。我只是通过多次调试手动跟踪NPE到PhoneBackup
如果出现异常,请在您的问题中加入logcat。我理解您的评论,但stacktrace在这里是毫无用处的,因为它指向我的应用程序方法,而没有提到我开发的库的PhoneBackup
类。我只是通过多次调试手动跟踪NPE到PhoneBackup
。