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

How I can send a Serializable Class to a other Activity with all fields?

我想启动另一个活动并从一个类中按类型发送一个对象,该类具有一个字段viewgroup。

在这里上课:

1
2
3
4
5
6
7
8
9
10
11
public class SerializableObject implements Serializable {
    public ViewGroup parent;

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

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

这里是电话:

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

        cordova.getActivity().startActivity(i);

我得到错误:

Parcelable在写入可序列化对象时遇到IOException


不能在活动之间发送视图。每个视图都附加到自己的活动(上下文)上。如果尝试在使用不同视图创建的某个活动中使用视图,则可能会导致内存泄漏和崩溃。

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

您可以使用一个只包含必要数据的简单可序列化类来实现这一点,也可以只为需要传递的每一段数据设置一个额外的类。


尝试使用bundle传递可序列化列表。可序列化:

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

在另一个Activity中,得到:

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


您的类必须实现Serializable

1
2
3
4
intent.putExtra("MyClass", obj);

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

希望这有帮助。