将视图和片段保存在文件中

Posted

技术标签:

【中文标题】将视图和片段保存在文件中【英文标题】:Save views and fragments in a file 【发布时间】:2018-10-18 10:56:28 【问题描述】:

我的应用程序允许用户向视图添加图像和文本。所以现在我想保存片段,以便他们以后可以对其进行修改并进一步自定义它。但是,我找不到保存片段列表的方法。我试过了:

ArrayList<FlashcardsTemplateActivity> FlashCards = new ArrayList<FlashcardsTemplateActivity>();
public void Save() 
    try 
        ByteArrayOutputStream bos = new ByteArrayOutputStream();
        ObjectOutputStream oos = new ObjectOutputStream(bos);
        oos.writeObject(FlashCards);
        byte[] bytes = bos.toByteArray();
     catch (IOException ex) 
        Log.d("Error! Failed!", "Save: Failed");
        Log.d("Error! Failed!", ex.getMessage());
        Log.d("Error! Failed!", ex.toString());

    

但是,这会引发 java.io.NonSerializableException。

提前致谢。

【问题讨论】:

【参考方案1】:

这并不像将包含一些视图的数组写入流那么简单。您首先必须将这些视图转换为您喜欢的任何格式,并且可以存储在文件中。选项是将它们转换为 JSON、XML 或纯文本 - 您还可以创建视图的原始二进制文件。阅读它们时,您需要一个解析器来解析对象并重新创建视图并将它们添加到布局中。 当图像包含自定义位图时,您还必须将位图存储在此文件中。

【讨论】:

【参考方案2】:

您不能以所描述的方式做到这一点。 您需要一些中间对象来保存和从数据库或其他持久层读取。 以下是如何在 DB 中保存对象的起点:Save data in a local database using Room

【讨论】:

以上是关于将视图和片段保存在文件中的主要内容,如果未能解决你的问题,请参考以下文章

如何保存具有列表视图的片段状态

android片段中的视图重用

android片段-当另一个片段被推到它上面时如何保存片段中的视图状态

保存以编程方式为片段创建的视图并在 onresume 中恢复

将视图粘贴在协调器布局内的 viewpager 片段的底部

在导航抽屉片段中保存视图页面片段的状态