回答

-1

您需要确保该类实现java.io.Serializable接口。另外考虑使用Bundles,并将您的数据保存在onSaveInstanceState中。有关数据存储的更多信息,请参阅this dev guide topic

+0

yes我在我的GameField类上实现了java.io.Serializable,我的GameField类包含fileds Rect bouds,当我保存GameField类时抛出java.io.NotSerializableExeption,我认为它是界限。我的问题是如何存储我的界限?谢谢 –

+0

好吧,在这种情况下,您需要手动序列化对象。您可以覆盖'writeObject'和'readObject'方法来执行此操作。 –

+0

请给我一些提示如何去做。谢谢 –

0

我遇到同样的问题,使这个类来帮助序列:

public class SerializableRect implements Serializable { 

private static final long serialVersionUID = 1L; 

private Rect mRect; 

public SerializableRect(Rect rect) { 
    mRect = rect; 
} 

public Rect getRect() { 
    return mRect; 
} 

private void writeObject(java.io.ObjectOutputStream out) throws IOException { 
    int left = mRect.left; 
    int top = mRect.top; 
    int right = mRect.right; 
    int bottom = mRect.bottom; 

    out.writeInt(left); 
    out.writeInt(top); 
    out.writeInt(right); 
    out.writeInt(bottom); 
} 

private void readObject(java.io.ObjectInputStream in) throws IOException, 
     ClassNotFoundException { 
    int left = in.readInt(); 
    int top = in.readInt(); 
    int right = in.readInt(); 
    int bottom = in.readInt(); 

    mRect = new Rect(left, top, right, bottom); 
} 
} 
0

如果你的对象地图中包含一个不可序列化对象的VM寻找一个无参数的构造函数,使用默认值的对象并继续前进。它不能引发这个异常。底线是,每一个对象在你的对象图引用必须:

  1. 实现Serializable,(和它所有的成员也这样做),或从实现Serializable基类
  2. 继承(和所有成员都遵循这些规则),或者
  3. 实现可串行化并且所有不可序列化的成员都标记为易失性,或者
  4. 未如此标记的非可串行化成员具有用于反序列化的无参数默认构造函数。

你没有提供足够的细节让我走得更远,但是我无法为你写出它吗?通常,您可以从不可序列化的类派生出来,或者将它们包装并提供必要的功能。只要每个成员符合我列出的条件,就不会抛出异常。