我想将剪贴板数据保存到文件中。这是我的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类,如何通过序列化删除此异常?
谢谢, 斯纳
答案 0 :(得分:1)
只能序列化基本类型。 ClipDate没有实现Serializable接口。所以,你不能这样做。但是你可以创建自己的对象。它应该实现Serializable接口并包含具有基本类型的字段,例如String。您可以使用ClipDate对象中的必要数据填充它们并序列化您的对象。然后,您可以反序列化您的对象并恢复初始ClipDate对象。