代码之家  ›  专栏  ›  技术社区  ›  dev90

java.lang.RuntimeException:Parcelable在写入序列化时遇到IOException

  •  0
  • dev90  · 技术社区  · 7 年前

    我有一个 arraylist 我想从一个活动发送到另一个活动,我使用serializable,但最终得到以下错误消息。

    java.lang.RuntimeException:Parcelable遇到IOException

    我还回顾了关于这方面的一些问题 SO ,他们中的大多数人说,在 Serialized Serializable ,但在这里 Path ,“RectF”, Matrix ,不是我的类,它们是android类,我无法实现 可序列化 在这些课上。

    这就是我将数组列表从一个活动发送到另一个活动的方式。

    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 回复  |  直到 7 年前
        1
  •  2
  •   CommonsWare    7 年前

    这里的Path,'RectF',Matrix不是我的类,它们是android类,我不能在这些类中实现可序列化。。

    那么,在中没有用于它们的字段 Serializable

    要么:

    • 这里不要有单独的活动,而是做一些其他的事情(例如,一个活动和两个片段),以避免需要 Intent

    • 不要在活动之间传递此数据,而是使用不同的应用程序体系结构(例如,数据不是由任何一个活动持有,而是由两个活动都可以对话的存储库持有),或者

    • 创建一些可以创建的数据结构 Parceable ,从中可以使用所需的类重新生成模型对象,并传递该类 Parcelable / 可序列化 数据库中的数据结构 TData