java.lang.RuntimeException: Parcelable 遇到 IOException 写入可序列化
Posted
技术标签:
【中文标题】java.lang.RuntimeException: Parcelable 遇到 IOException 写入可序列化【英文标题】:java.lang.RuntimeException: Parcelable encountered IOException writing serializable 【发布时间】:2019-04-26 20:05:12 【问题描述】:我有一个arraylist
,我想从一个活动发送到另一个活动,我正在使用可序列化但最终收到以下错误消息。
java.lang.RuntimeException: Parcelable 遇到 IOException 编写可序列化对象(name = com.app...)
我还在SO
上查看了一些关于此的问题,其中大多数人说在Serialized
类中定义的所有类也应该实现Serializable
,但这里Path
,'RectF', Matrix
,不是我的类,它们是 android 类,我无法在这些类中实现 Serializable
。
这就是我将数组列表从 1 个活动发送到另一个活动的方式。
Intent intent= new Intent(MainActivity.this, DetailsActivity.class);
Bundle bundle= new Bundle();
bundle.putSerializable("PATH_LIST", pathsList);
bundle.putString("FILE_NAME", fileName);
intent.putExtras(bundle);
startActivity(intent);
这是我的课。
public class TData implements Serializable
Matrix originalMatrix;
public Path path;
PointF position;
private TData attachedPathData;
public void setAttachedPathData(TData pathData)
attachedPathData = pathData;
public TData getAttachedPathData()
return attachedPathData;
public TData()
public TData(Path path, PointF position, String id, String fillColor, String strokeColor)
this.path = path;
this.position = position;
this.id = id;
this.fillColor = fillColor;
this.strokeColor = strokeColor;
public void Scale(float scaleX, float scaleY)
this.scaleX = scaleX;
this.scaleY = scaleY;
Matrix scaleMatrix = new Matrix();
RectF rectF = new RectF();
path.computeBounds(rectF, true);
scaleMatrix.setScale(scaleX,scaleY);
path.transform(scaleMatrix);
Matrix mat = new Matrix();
path.computeBounds(rf, true);
Region r = new Region();
【问题讨论】:
以后,请发布整个堆栈跟踪,而不仅仅是错误消息。 【参考方案1】:这里的 Path、'RectF'、Matrix,不是我的类,它们是 android 类,我无法在这些类中实现 Serializable..
那么在Serializable
类中没有它们的字段。
要么:
这里没有单独的活动,而是做其他事情(例如,一个活动和两个片段),以避免需要Intent
,或者
不要在活动之间传递此数据,而是使用不同的应用程序架构(例如,数据不由任一活动持有,而是由两个活动可以与之通信的存储库持有),或
创建一些可以创建Parceable
或Serializable
的数据结构,从中可以使用所需的类重建模型对象,并将Parcelable
/Serializable
数据结构传递到@ 987654327@ 而不是 TData
【讨论】:
以上是关于java.lang.RuntimeException: Parcelable 遇到 IOException 写入可序列化的主要内容,如果未能解决你的问题,请参考以下文章