【发布时间】:2014-01-13 08:21:27
【问题描述】:
这是我认为与此问题相关的部分代码。
//Enveloping class
public class BackupSMS implements Serializable{
transient Cursor cursor;
String vfile;
transient Context mContext;
private final String TAG = "BackupSMS";
SMSBackup smsBackup;
transient FileOutputStream mFileOutputStream;
public BackupSMS(Context context, String _vfile) {
mContext = context;
vfile = _vfile;
smsBackup = new SMSBackup();
}
内部类:
public class SMSBackup implements Serializable{
public ArrayList<SMSObject> SMSList;
public SMSBackup() {
SMSList = new ArrayList<SMSObject>();
}
}
public class SMSObject implements Serializable{
private String id;
private String addr;
private String msg;
.... (more private strings and getter setter methods for them)
}
//method of enveloping class.
public void writeSMSList(){
......
mFileOutputStream = mContext.openFileOutput(vfile, Context.MODE_PRIVATE);
ObjectOutputStream oos = new ObjectOutputStream(mFileOutputStream);
//smsBackup is an object of SMSBackup class created earlier.
oos.writeObject( smsBackup );
oos.close();
.......
}
我似乎没有在图片中找到任何不可序列化的对象。任何关于问题所在的建议都会有所帮助。
编辑:我看堆栈跟踪的距离不够近。下面是我获得的堆栈跟踪,但它仍然没有让我更接近解决方案。有什么建议吗?
java.io.NotSerializableException: android.content.ContentResolver$CursorWrapperInner
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
at java.io.ObjectOutputStream.writeFieldValues(ObjectOutputStream.java:979)
at java.io.ObjectOutputStream.defaultWriteObject(ObjectOutputStream.java:368)
at java.io.ObjectOutputStream.writeHierarchy(ObjectOutputStream.java:1074)
at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1404)
at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)
....以及更多这样的行。
【问题讨论】:
-
原因出现在消息中。它命名了一个不可序列化的类。没有什么可不确定的。
-
让有问题的班级
implements Seializable. -
@ᴍarounᴍaroun - 这只是解决方案的一部分......
-
你没有粘贴你得到的错误
-
"这些是其他类的内部类。" - 然后序列化它们也必须序列化它们的包含类的实例。包含类是否可序列化?
标签: java android serialization