NotSerializableException:如何将ClipData保存到文件?

时间:2014-06-26 14:54:04

标签: android exception serialization clipboard

我想将剪贴板数据保存到文件中。这是我的Activity类中的代码:

ClipData clip = mClipboard.getPrimaryClip();

FileOutputStream fos;
ObjectOutputStream os;
try {
    fos = openFileOutput(FILENAME, Context.MODE_PRIVATE);
    os = new ObjectOutputStream(fos);
    os.writeObject(clip);
    os.close();
} catch (FileNotFoundException e) {
    e.printStackTrace();
} catch (IOException e) {
    e.printStackTrace();
}

我得到了这个例外:

06-26 20:20:03.556:W / System.err(24228):java.io.NotSerializableException:android.content.ClipData 06-26 20:20:03.556:W / System.err(24228):at java.io.ObjectOutputStream.writeNewObject(ObjectOutputStream.java:1364) 06-26 20:20:03.556:W / System.err(24228):at java.io.ObjectOutputStream.writeObjectInternal(ObjectOutputStream.java:1671) 06-26 20:20:03.556:W / System.err(24228):at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1517) 06-26 20:20:03.556:W / System.err(24228):at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:1481)

由于ClipData是Android类,如何通过序列化删除此异常?

谢谢, 斯纳

1 个答案:

答案 0 :(得分:1)

只能序列化基本类型。 ClipDate没有实现Serializable接口。所以,你不能这样做。但是你可以创建自己的对象。它应该实现Serializable接口并包含具有基本类型的字段,例如String。您可以使用ClipDate对象中的必要数据填充它们并序列化您的对象。然后,您可以反序列化您的对象并恢复初始ClipDate对象。