序列化 Drawable 时出现问题

2023-11-30

我有一个对象,它具有三个字段:两个字符串和一个Drawable

public class MyObject implements Serializable {

    private static final long serialVersionUID = 1L;
    public String name;
    public String lastName;
    public Drawable photo;

    public MyObject() {
    }

    public MyObject(String name, String lastName, Drawable photo) {

        this.name = name;
        this.lastName = lastName;
        this.photo = photo;
    }
}

我想做的就是拯救一个ArrayList这些对象到一个文件,但我不断得到NotSerializableException

02-02 23:06:10.825: WARN/System.err(13891): java.io.NotSerializableException: android.graphics.drawable.BitmapDrawable

我用来存储文件的代码:

public static void saveArrayList(ArrayList<MyObject> arrayList, Context context) {

    final File file = new File(context.getCacheDir(), FILE_NAME);
    FileOutputStream outputStream = null;
    ObjectOutputStream objectOutputStream = null;

    try {
        outputStream = new FileOutputStream(file);
        objectOutputStream  = new ObjectOutputStream(outputStream);

        objectOutputStream.writeObject(arrayList);
    }

    catch(Exception e) {
        e.printStackTrace();
    }
    finally {
        try {
            if(objectOutputStream != null) {
                objectOutputStream.close();
            }
            if(outputStream != null) {
                outputStream.close();
            }
        }
        catch (Exception e) {
            e.printStackTrace();
        }
    }
}

当可绘制对象未初始化时,一切正常。 预先感谢您的任何帮助。


java.io.NotSerializableException: android.graphics.drawable.BitmapDrawable

这条消息看起来很清楚 - 中的特定可绘制实例photo字段是一个位图绘制,它不是为序列化而设计的。如果不处理不可序列化字段,您的类就无法序列化。

如果您能确保您的班级始终有一个BitmapDrawable or a Bitmap,您可以查看此代码,了解如何处理Bitmap field:

Android 如何保存位图 - 有错误的代码

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

序列化 Drawable 时出现问题 的相关文章

随机推荐

  • 定义为函数调用参数的函数名称不会被提升。为什么不?

    考虑以下代码 请注意a似乎在定义之前就已被访问 控制台输出为 jsfiddle function a 函数和变量名称是在任何其他代码运行之前定义的 因此 console log 调用在这里起作用 这就是所谓的hoisting 但如果函数被定
  • Python - 将一个 sns.histplot() 中的 bin 用于另一个/从 sns.histpllot() 中提取 bin 信息

    我正在尝试并排绘制 2 个直方图 第一个用于完整数据集 第二个用于数据集的子集 为了可比性 我希望两者具有相同的类间隔 并且必须根据 Freedman Diaconis 规则计算 bin 宽度 可能是 sns histplot 根据 sta
  • 在任何来源中都找不到 rake-10.1.0

    我一直在使用 Rails 并尝试使用 rake 10 1 0 设置乘客 它向我发回此错误 这是错误的链接 网站链接 It looks like Bundler could not find a gem This is probably be
  • 使用 javascript onkeydown 处理按键

    我有这个代码 function verifyKey e var keycode if window event keycode window event keyCode else if e keycode e which regex 1 9
  • 如何从 Dataframe 中删除页眉和页脚?

    我正在读取一个文本 不是 CSV 文件 其中包含页眉 内容和页脚 使用 spark read format text option delimiter load file 我可以通过以下方式访问标题df first 有没有什么接近的df l
  • Java,需要一个while循环才能达到eof。即 while !eof,继续解析

    我目前有一个正在工作的解析器 它解析一次文件 不是我想要的 然后将解析后的数据输出到文件中 我需要它继续解析并附加到同一输出文件 直到输入文件末尾 看起来像这样 try my code parsing the data and append
  • 发送到 webapp 的 POST 请求的最大大小

    我在 Google Apps 脚本项目中经常使用 doPost 函数回调 最近一直在寻找有关 GAS Web 应用程序接受 POST 请求的最大大小的文档 但无济于事 在限制和配额页面中 它提到了 url fetch 相关数据 我认为这些数
  • 元组从列表中重复消除

    考虑以下元组列表 val input List A B C B B A 并假设元素 A B and B A 是相同的 因此是重复的 从上面的列表中消除重复的有效方法是什么 最好是在 Scala 中 这意味着所需的输出是另一个列表 val d
  • pandas 多索引排序特定字段

    I obtained a multi index in pandas by running series describe for a grouped dataframe How can I sort these series by mod
  • 将 System.ComponentModel 默认值属性内的 DateTime 属性的默认值设置为 DateTime.Now

    有谁知道如何使用 System ComponentModel DefaultValue 属性指定 DateTime 属性的默认值 例如我尝试这个 DefaultValue typeof DateTime DateTime Now ToStr
  • 父级和子级复选框

    div div
  • 类型错误:“int”对象不可调用

    鉴于以下情况 a 23 b 45 c 16 round a b 0 9 c 运行上面的命令会输出错误 TypeError int object is not callable 如何将输出舍入为整数 在代码的其他地方 您有类似这样的内容 ro
  • Makefile - 找不到共享库

    我有一个 C Linux 项目的 Makefile MODE dbg DIR somdir MODE SRC FILES a cpp b cpp H FILES a h LDFLAGS L DIR lib linux Wl R ORIGIN
  • 如何优化 vlookup 以获得高搜索次数? (VLOOKUP 的替代方案)

    我正在寻找 vlookup 的替代方案 在感兴趣的上下文中提高性能 上下文如下 我有一个很大的 key data 数据集 100 000 条记录 我想对数据集执行大量VLOOKUP操作 典型用途是对整个数据集重新排序 我的数据集没有重复的键
  • Android 地图 API v2 中的彩色折线

    我想在 android 地图 api 版本 2 中绘制折线 我希望它有多种颜色 最好有渐变 但在我看来 折线只允许有单色 我怎样才能做到这一点 我已经有了 api v1 覆盖层来绘制我喜欢的内容 所以大概我可以重用一些代码 public c
  • 在Python中获取具有预先指定扩展名的文件基名

    我有以下字符串 path1 path2 foo bar qux txt 我想要做的是通过指定扩展名来提取基本名称 如果我将扩展定义为 bar qux txt那么基本名称是 foo 那么如果扩展名是 qux txt那么基数是 foo bar
  • Matplotlib 视频创建

    编辑 欧内斯特的重要性提供了答案 但是我仍然邀请大家解释 为什么savefig逻辑不同于animation logic 我想制作视频matplotlib 我浏览了手册和示例 但我就是不明白 关于matplotlib 我总是复制示例 因为经过
  • 关注 R 中的startsWith 和多种模式

    我注意到一个问题或疑虑startsWith 功能 以下代码显示两个不同的选择 第一个行为正常 是这样的代码块 dt test lt data table a c abcd poo abla ba id c 1 2 3 4 dt test s
  • 如何将 iOS 设备键盘更改为特定语言

    在iOS中 开发者可以获取当前设备语言和区域设置 但是 如果我们想根据用户的偏好将键盘设置为特定语言 区域设置 当用户位于应用程序的不同部分时 该怎么办 在我的应用程序中 有多种语言 我希望向用户显示阿拉伯语键盘 例如 当用户位于阿拉伯语部
  • 序列化 Drawable 时出现问题

    我有一个对象 它具有三个字段 两个字符串和一个Drawable public class MyObject implements Serializable private static final long serialVersionUID