Java 如何将整个对象传递给Android上的另一个活动

Java 如何将整个对象传递给Android上的另一个活动,java,android,bundle,Java,Android,Bundle,我试图将整个对象从一个活动传递到另一个活动,为此,我使用Bundle将每个atribute值用difrent“键”分离到对象的每个atribute,但对象太大,无法将atribute传递到atribute。我想知道是否有一种方法可以通过整个物体,而不是通过一个又一个心房 有没有办法在接收对象的类上创建构造函数?因此,当调用这个类时,它必须接收对象 Bundle valores; valores.putInt("CODIGO_CHECK", check.getCod());

我试图将整个对象从一个活动传递到另一个活动,为此,我使用Bundle将每个atribute值用difrent“键”分离到对象的每个atribute,但对象太大,无法将atribute传递到atribute。我想知道是否有一种方法可以通过整个物体,而不是通过一个又一个心房

有没有办法在接收对象的类上创建构造函数?因此,当调用这个类时,它必须接收对象

Bundle valores;
            valores.putInt("CODIGO_CHECK", check.getCod());
            valores.putInt("CODIGO_MODELO", check.getCodModeloCheckList());
            valores.putInt("COD_VEICULO_W", check.getCodVeiculoW());
            valores.putString("PLACA", check.getPlacaVeiculo());
            valores.putString("DATAINICIO", check.getDataInicioVistoria());
            valores.putString("CAMINHO_FT_PLACA", check.getCaminhoArquivoFotoPlacaVeiculo());
            valores.putString("COMENTARIO", check.getComentarios());
            valores.putString("MANIFESTO", check.getNumeroManifesto());
            valores.putString("SISTEMAS", check.getIdentificadorSistemasTerceiros());
            valores.putString("CONHECIMENTO", check.getNumeroConhecimentoTransporte());
            valores.putBoolean("SOMENTERBQ", check.getFlgSomenteReboques());
            valores.putInt("STATUS_CHECK", check.getStatusCheckList());
            valores.putString("MODELO", check.getNomeCheck());
            valores.putInt("BLOCKBUTTON", 1);
            Intent intent = new Intent(getApplicationContext(), SavedCheckActivity.class);
            intent.putExtras(valores);
            startActivity(intent);

这实际上就是我传递数据的方式。。问题是这个类(检查)有更多的心房肌。。要发送和接收这些数据变得越来越困难,您需要使用
Parcelable
接口将对象从一个活动传递到另一个活动。 要传递其类的对象应实现
Parcelalbe
接口,如下所示:

public class MyData implements Parcelable {
  ...
}
MyData data = getIntent().getExtras().getParcelable("data");
还可以在类中添加以下方法

//write object values to parcel for storage
public void writeToParcel(Parcel dest, int flags){
    //write all properties to the parcle
}

//constructor used for parcel
public MyData(Parcel parcel){
    //read and set saved values from parcel
}

//creator - used when un-parceling our parcle (creating the object)
public static final Parcelable.Creator<Property> CREATOR = new Parcelable.Creator<MyData>(){

    @Override
    public MyData createFromParcel(Parcel parcel) {
        return new MyData(parcel);
    }

    @Override
    public MyData[] newArray(int size) {
        return new MyData[0];
    }
};

//return hashcode of object
public int describeContents() {
    return hashCode();
}
在目标活动中,您可以按如下方式检索对象:

public class MyData implements Parcelable {
  ...
}
MyData data = getIntent().getExtras().getParcelable("data");

可以通过以下方式直接传递意图中的对象:

Intent intent = new Intent(getApplicationContext(), SavedCheckActivity.class);
intent.putExtra("keyObject", check);
startActivity(intent);
Intent rcv = getIntent();
Check check = (Check) rcv.getSerializableExtra("keyObject");
还将类检查标记为可序列化,如下所示:

public class check implements Serializable
{
//Attribures & Methods
}
您可以将其设置为:

Intent intent = new Intent(getApplicationContext(), SavedCheckActivity.class);
intent.putExtra("keyObject", check);
startActivity(intent);
Intent rcv = getIntent();
Check check = (Check) rcv.getSerializableExtra("keyObject");