У меня есть внутренний интерфейс, реализующий Serializable.
Я вижу сбои, сообщающие, что мой объект не сериализуем, но я не уверен, что это потому, что интерфейс объявлен в классе или из-за чего-то еще.
Я знаю, что классы с несериализуемыми объектами, такими как Activity, не могут быть сериализованы, но как насчет интерфейсов с методами, возвращающими объекты Activity, например?
Проще говоря, у меня есть
public class MyClass extends Parcelable{
MyInterface mInterface;
public interface MyInterface implements Serializable{
Activity getActivity();
}
}
и я получаю журналы аварий при попытке написать Посылку
dest.writeSerializable(mInterface);
Трассировка стека гласит:
Caused by java.io.NotSerializableException: com.android.internal.view.menu.MenuBuilder
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1233)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1597)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1558)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1481)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1227)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1597)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1558)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1481)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1227)
at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1597)
at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1558)
at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1481)
at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1227)
at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:347)
at android.os.Parcel.writeSerializable(Parcel.java:1757)
at MyClass.writeToParcel(MyClass.java:87)
Какова наиболее вероятная причина не сериализации:
- этот интерфейс находится внутри класса, который не сериализуем
- этот интерфейс включает в себя действие