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