java.lang.RuntimeException: Parcelable 遇到IOException 写入serializable
java.lang.RuntimeException: Parcelable encountered IOException writing serializable
我有一个 arraylist
想从 1 activity 发送到另一个,我正在使用可序列化但最终收到以下错误消息。
java.lang.RuntimeException: Parcelable encountered IOException
writing serializable object (name = com.app...)
我也在 SO
上评论了一些关于此的问题,其中大多数人说所有 classes 在你的 Serialized
class 中定义也应该实现 Serializable
,但是这里 Path
、'RectF'、Matrix
不是我的 class,它们是 android classes,我无法在这些 classes 中实现 Serializable
。
这就是我将数组列表从 1 activity 发送到另一个的方式。
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);
这是我的class。
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();
}
}
here Path, 'RectF', Matrix, are not my classes, they are android classes, and i can't implement Serializable in these classes..
然后在 Serializable
类 中没有它们的字段。
或者:
这里不要有单独的活动,而是做一些其他的事情(例如,一个 activity 和两个片段)来避免需要 Intent
,或者
不要在活动之间传递此数据,而是使用不同的应用程序架构(例如,数据不由任何 activity 保存,而是由存储库保存两个活动都可以对话),或者
创建一些您可以制作 Parceable
或 Serializable
的数据结构,从中您可以使用所需的 类 重建模型对象,然后将其传递Parcelable
/Serializable
数据结构中的 Intent
而不是 TData
我有一个 arraylist
想从 1 activity 发送到另一个,我正在使用可序列化但最终收到以下错误消息。
java.lang.RuntimeException: Parcelable encountered IOException writing serializable object (name = com.app...)
我也在 SO
上评论了一些关于此的问题,其中大多数人说所有 classes 在你的 Serialized
class 中定义也应该实现 Serializable
,但是这里 Path
、'RectF'、Matrix
不是我的 class,它们是 android classes,我无法在这些 classes 中实现 Serializable
。
这就是我将数组列表从 1 activity 发送到另一个的方式。
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);
这是我的class。
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();
}
}
here Path, 'RectF', Matrix, are not my classes, they are android classes, and i can't implement Serializable in these classes..
然后在 Serializable
类 中没有它们的字段。
或者:
这里不要有单独的活动,而是做一些其他的事情(例如,一个 activity 和两个片段)来避免需要
Intent
,或者不要在活动之间传递此数据,而是使用不同的应用程序架构(例如,数据不由任何 activity 保存,而是由存储库保存两个活动都可以对话),或者
创建一些您可以制作
Parceable
或Serializable
的数据结构,从中您可以使用所需的 类 重建模型对象,然后将其传递Parcelable
/Serializable
数据结构中的Intent
而不是TData