当前位置: 首页 > 知识库问答 >
问题:

Parcelable遇到IOExctive写入序列化对象?

杜阳炎
2023-03-14

我得到"Parcelable遇到IOExctive编写序列化对象"错误在这个代码

public void onClick(View v) {
                tvResult.setText("Povezivanje s bazom u tijeku...");
                Intent i = new Intent("android.intent.action.MAINACTIVITY");

                Details details = new Details();
                details.host=etHost.getText().toString();
                details.user=etUsername.getText().toString();
                details.pass=etPass.getText().toString();
                details.database=etBaza.getText().toString();

                new GetData(tvResult).execute("");

                Bundle bundle = new Bundle();
                bundle.putSerializable("Detalji", details);
                i.putExtras(bundle);
                startActivity(i);

            }

这也是我的细节类:

public class Details implements Serializable 
    {

        private static final long serialVersionUID = 1L;
        private String host;
        private String pass;
        private String user;
        private String database;
    }

startActivity(i)command之前,一切都很好,有人知道为什么吗?

共有2个答案

龙嘉誉
2023-03-14

你必须实现Parcelable到你的数据类详细信息

public class Details implements Serializable, Parcelable {
    private static final long serialVersionUID = 1L;
    private String host;
    private String pass;
    private String user;
    private String database;

    public Details(Parcel in){
       this.host = in.readString();
       this.pass = in.readString();
       this.user = in.readString();
       this.database = in.readString();
    }

    @Override
    public void writeToParcel(Parcel dest, int flags) {
        dest.writeString(this.host);
        dest.writeString(this.pass);
        dest.writeString(this.user);
        dest.writeString(this.database);
    }

    public static final Parcelable.Creator<Details> CREATOR = new Parcelable.Creator<Details>() {
        public Details createFromParcel(Parcel in) {
            return new Details(in); 
        }

        public Details[] newArray(int size) {
            return new Details[size];
        }
    };
}

现在我试着写一些应该对你有用的东西,但我不是100%确定它会,所以从这里做一些传统的阅读:

  • http://prasanta-paul.blogspot.com/2010/06/android-parcelable-example.html
邹华皓
2023-03-14

在Details类中,您是否重写了writeToParcel和readFromParcel?

@Override
    public void writeToParcel(Parcel dest, int flags) {
}

如果希望通过意图传递复杂对象,则详细信息需要实现Parcelable。

详细信息类需要在它自己的文件中,而不是实现parcelable。

 类似资料:
  • 在我的Android应用程序中,我想将我的自定义对象传递给另一个活动。我正在使用意图 在调用活动 我也在我的模型类中实现了Serilizable。但是当我运行应用程序时,它显示 JAVAlang.RuntimeException:Parcelable在写入可序列化对象时遇到IOException 日志显示了这一点

  • 我的应用程序的某些实例出现以下错误: 我不知道如何复制这一点,但看看stacktrace,它似乎是在应用程序停止时发生的。 我真的不明白为什么android试图序列化/打包我的片段,我没有在任何地方实现onSaveInstanceState/onRestoreInstanceState。 谁能帮帮我吗? 谢谢,卢卡 编辑:谢谢你的回答。不,我没有任何视图的自定义输入, 可能是解决此错误的方法,重写

  • 问题内容: 我想使用实现的DataWrapper将ArrayList对象传递给另一个活动。 我遵循此处提供的答案:将用户定义对象的arraylist传递给Intentandroid。 我开始从另一个活动库的。这就是我传递ArrayList对象的方式: 我实现了DataWrapper类,如下所示: 并得到错误。这是我的Logcat: 我在上面的链接中遵循了答案(通过数组列表对象),但得到了错误,是什

  • 本文向大家介绍Android中的Parcelable序列化对象,包括了Android中的Parcelable序列化对象的使用技巧和注意事项,需要的朋友参考一下 今天查阅资料,简单了解了一下Parcelable接口,它是android提供的序列化对象的接口,比java中的 Serializable高效些。通过这个接口序列化对象主要有两步: 1.实现public void writeToParcel(

  • 本文向大家介绍Android中Serializable和Parcelable序列化对象详解,包括了Android中Serializable和Parcelable序列化对象详解的使用技巧和注意事项,需要的朋友参考一下 本文详细对Android中Serializable和Parcelable序列化对象进行学习,具体内容如下 学习内容: 1.序列化的目的 2.Android中序列化的两种方式 3.Par

  • 问题内容: 我将多个对象写入文件,然后在代码的另一部分中检索它们。我的代码没有错误,但是无法正常工作。您能帮我发现我的代码有什么问题吗?我从不同的网站阅读了不同的代码,但是没有一个对我有用! 这是将对象写入文件的代码:MyClassList是一个数组列表,其中包含我的类的对象(必须将其写入文件)。 我向输出流的构造函数添加了“ true”,因为我想将每个对象都添加到文件的末尾。那是对的吗? 这是我