如何将Serializable类发送到包含所有字段的其他Activity?

时间:2017-02-24 11:35:31

标签: java android serialization android-framelayout viewgroup

我想启动另一个Activity并从一个类中按类型ViewGroup发送一个对象。

这里是班级:

public class SerializableObject implements Serializable {
    public ViewGroup parent;

    public SerializableObject(ViewGroup parent){
        this.parent = parent;
    }

    public ViewGroup getParent(){
        return this.parent;
    }
}

这里是电话:

        Intent i = new Intent(thisContext,CordovaViewer.class);
        i.putExtra("KEY",obj);

        cordova.getActivity().startActivity(i);

我收到错误:

Parcelable遇到编写可序列化对象的IOException

3 个答案:

答案 0 :(得分:2)

您无法在活动之间发送视图。每个视图都附加到它自己的Activity(它的Context)。如果您尝试在一个使用不同活动创建的活动中使用View,则会导致内存泄漏和崩溃。

只需发送您在接收活动中重新创建对象所需的数据。

您可以使用一个简单的Serializable类来完成此操作,该类仅包含必要的数据,或者只需为您需要传递的每个数据设置Extra。

答案 1 :(得分:0)

您的班级必须实施Serializable

intent.putExtra("MyClass", obj);

// To retrieve object in second Activity
getIntent().getSerializableExtra("MyClass");

希望这有帮助。

答案 2 :(得分:0)

尝试使用Bundle.Serializable传递可序列化列表:

Bundle bundle = new Bundle();
bundle.putSerializable("value", obj);
intent.putExtras(bundle);

在其他Activity中将其视为:

Intent intent = this.getIntent();
Bundle bundle = intent.getExtras();
Object obj = bundle.getSerializable("value");