You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

java.io.NotSerializableException: androidx.emoji2.text.SpannableBuilder问题求助

问题解决:java.io.NotSerializableException: androidx.emoji2.text.SpannableBuilder

问题原因

你的保存逻辑中,UpdateText方法直接将EditText返回的CharSequence对象存入Note实例。当用户输入表情符号时,Android系统会用SpannableBuilder(emoji2库中的类)包装文本,而这个类未实现Serializable接口,导致序列化整个State对象时抛出异常。之前功能正常是因为未触发表情输入场景,此时CharSequence是普通的Serializable实现类(如String)。

修复方案

修改UpdateText方法,将CharSequence转换为String后再存入Note对象——String天然支持Serializable:

private void UpdateText(CharSequence text){
    State.St.st_current.getNote(noteId).setText(String.valueOf(text));
}

同时确保Note类中的text字段类型为String(而非CharSequence),避免后续序列化出现兼容问题:

public class Note implements Serializable {
    private String title;
    private String text; // 用String类型存储文本

    // getter和setter方法
    public String getText() { return text; }
    public void setText(String text) { this.text = text; }
}

验证逻辑

修改后,无论EditText返回的是普通String还是带表情的SpannableBuilder,都会被转换为String保存,既保留了完整文本内容(包括表情的字符表示),又保证了序列化的兼容性。


原错误日志

2022-07-12 07:20:57.196 28080-28080/com.learn.myapplication W/System.err: java.io.NotSerializableException: androidx.emoji2.text.SpannableBuilder
2022-07-12 07:20:57.196 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1240)
2022-07-12 07:20:57.196 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
2022-07-12 07:20:57.196 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
2022-07-12 07:20:57.196 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.util.ArrayList.writeObject(ArrayList.java:762)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.lang.reflect.Method.invoke(Native Method)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectStreamClass.invokeWriteObject(ObjectStreamClass.java:1036)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1552)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.defaultWriteFields(ObjectOutputStream.java:1604)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeSerialData(ObjectOutputStream.java:1565)
2022-07-12 07:20:57.197 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeOrdinaryObject(ObjectOutputStream.java:1488)
2022-07-12 07:20:57.198 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeObject0(ObjectOutputStream.java:1234)
2022-07-12 07:20:57.198 28080-28080/com.learn.myapplication W/System.err:     at java.io.ObjectOutputStream.writeObject(ObjectOutputStream.java:354)
2022-07-12 07:20:57.198 28080-28080/com.learn.myapplication W/System.err:     at com.learn.myapplication.Utility$ManageData.SaveState(Utility.java:34)

内容的提问来源于stack exchange,提问作者Shogery

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.26 09:06:24