android 内部类对象的序列化问题

快乐的Android小小鸟 2012-06-15 06:48:00
问题描述:我定义了两个类,A和B,它们都继承了Activity,我想在A类中启动B类,同时A类中定义了一个内部类C,作为监听器,监听B类的某些操作,C实现了Serializable接口,我打算在启动B类时,通过Intent的putExtra()方法把C类的一个对象传给B类,运行时出错,错误信息如下:
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name =                        com.android.p2p.group.Group$UIListener)

UIListener是Group类的内部类

刚开始学Android开发,我还是个菜鸟,望各位大侠多多帮忙!先行谢过!!!
...全文
4018 6 打赏 收藏 转发到动态 举报
写回复
用AI写文章
6 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
[Quote=引用 2 楼 的回复:]

非静态内部类么?
非静态内部类的实例,会隐含保存一个指向其外部类实例的引用。如果进行序列化,估计会有问题。

如果有可能的话,对于需要序列化的实例,最好不要使用非静态的内部类
[/Quote]

恩,是非静态的内部类,虽然没有成员变量,但确实使用了主类的成员变量,而这些变量是外部类的引用,都让你说对了,佩服佩服……

还有就是,书上说一个对象的静态变量不会被序列化,那一个静态类的对象是不是也不能被初始化?
  • 打赏
  • 举报
回复
[Quote=引用 1 楼 的回复:]

试试实现Parcelable
[/Quote]

我的这个内部类中只有方法没有成员变量,我在网上看到的实现Parcelable的教程是要把序列化对象的成员写到流里面,我不知道我的这个内部类怎么用实现Parcelable的方法序列化,而且我一直困惑的是,在序列化的介绍中都只提到成员变量的序列化,序列化后对象的方法还能用,难道方法也要序列化吗?
weidong0210 2012-06-17
  • 打赏
  • 举报
回复
该类要实现序列化接口
RDroid 2012-06-16
  • 打赏
  • 举报
回复
非静态内部类么?
非静态内部类的实例,会隐含保存一个指向其外部类实例的引用。如果进行序列化,估计会有问题。

如果有可能的话,对于需要序列化的实例,最好不要使用非静态的内部类
fredhurui 2012-06-16
  • 打赏
  • 举报
回复
试试实现Parcelable

80,493

社区成员

发帖
与我相关
我的任务
社区描述
移动平台 Android
androidandroid-studioandroidx 技术论坛(原bbs)
社区管理员
  • Android
  • yechaoa
  • 失落夏天
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧