Вот часть кода, я думаю, имеет отношение к этому вопросу.NotSerializableException: Не знаете, в чем причина
//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();
.......
}
Я, кажется, не найти unserializable объект на картинке. Любые советы, как то, что происходит не так, помогут.
EDIT: Я не выглядел достаточно близко к трассе стека. Ниже получена трассировка стека, но она по-прежнему не приближает меня к решению. Какие-либо предложения?
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)
.... и многие другие подобные линии.
Причина появляется в сообщении. Он называет класс, который не является сериализуемым. Нет ничего, о чем можно было бы не знать. – EJP
Пусть проблемный класс «реализует Seializable». – Maroun
@ ᴍarounᴍaroun - Это только часть решения .... –