我有一个 ArrayList,其中填充了一些自定义 POJO,当用户切换屏幕方向(onSaveInstanceState)以及例如用户点击后退按钮(onPause)。
据我所知,SharedPreferences只能保存原始数据类型,而bundle不能保存对通用ArrayList的引用。
关于如何解决这个问题有什么建议吗?
问候,
马库斯
最佳答案
1- 创建一个类并放置您想要存储的所有内容,例如 POJO
的 arraylist
并让该类实现 Serialized
接口(interface)。
class MyBundle implements Serializable {
ArrayList<POJO> mPOJO;
MyBundle( ArrayList<POJO> pojo){
mPOJO= pojo;
}
}
2-将其写入文件:
ObjectOutputStream oos = null;
FileOutputStream fout = null;
try{
FileOutputStream fout = new FileOutputStream("Your file path");
ObjectOutputStream oos = new ObjectOutputStream(fout);
oos.writeObject(mb); // mb is an instance of MyBundle
} catch (Exception ex) {
e.printStackTrace();
}finally {
if(oos != null){
oos.close();
}
}
并取回所有内容:
ObjectInputStream objectinputstream = null;
try {
streamIn = new FileInputStream("Your file address");
objectinputstream = new ObjectInputStream(streamIn);
MyBundle mb = (MyBundle) objectinputstream.readObject();
} catch (Exception e) {
e.printStackTrace();
}finally {
if(objectinputstream != null){
objectinputstream .close();
}
}
关于java - Android 保存 ArrayList<CustomObject> onPause 和 onSaveInstanceState,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26035366/