Android中使用Intent在Activity之间传递对象(使用Serializable或者Parce

2019-12-10 19:14:24王振洲
易采站长站为您分析 Android中使用Intent在Activity之间传递对象(使用Serializable或者Parcelable)的方法的相关资料,需要的朋友可以参考下  

 Android中的不同Activity之间传递对象,我们可以考虑采用Bundle.putSerializable(Key,Object);也可以考虑采用Bundle.putParcelable(Key, Object);其中前面一种方法中的Object要实现Serializable接口,后面一种方法中的Object要实现Parcelable接口。下面我们以一个完整的例子来说明。

1.新建一个Android的工程,其中该工程的目录结构如下图:

Android中使用Intent在Activity之间传递对象(使用Serializable或者Parcelable)的方法

2. 修改main.xml布局文件。布局文件的源码如下:

<?xml version="1.0" encoding="utf-8"?> 
<LinearLayout xmlns:android="http://www.easck.com/apk/res/android" 
android:orientation="vertical" 
android:layout_width="fill_parent" 
android:layout_height="fill_parent" 
> 
<TextView 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="@string/hello" 
/> 
<Button 
android:id="@+id/serButton" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Serializable"/> 
<Button 
android:id="@+id/parButton" 
android:layout_width="fill_parent" 
android:layout_height="wrap_content" 
android:text="Parcelable"/> 
</LinearLayout> 

3.在工程的src目录下新建一个实体类包,命名为com.andy.entity.同时在该package中添加两个实体类,一个是Person.java,该类实现Serializable接口;一个是Police.java,该类实现Parcelable接口。代码分别如下:

Person.java:
package com.andy.entity; 
import java.io.Serializable; 
public class Person implements Serializable { 
private static final long serialVersionUID = -6919461967497580385L; 
private String name; 
private int age; 
public String getName() { 
return name; 
} 
public void setName(String name) { 
this.name = name; 
} 
public int getAge() { 
return age; 
} 
public void setAge(int age) { 
this.age = age; 
} 
} 
Police.java:
[c-sharp] view plain copy
package com.andy.entity; 
import android.os.Parcel; 
import android.os.Parcelable; 
public class Police implements Parcelable { 
private String name; 
private int workTime; 
public String getName() { 
return name; 
} 
public void setName(String name) { 
this.name = name; 
} 
public int getWorkTime() { 
return workTime; 
} 
public void setWorkTime(int workTime) { 
this.workTime = workTime; 
} 
public static final Parcelable.Creator<Police> CREATOR = new Creator<Police>() { 
@Override 
public Police createFromParcel(Parcel source) { 
Police police = new Police(); 
police.name = source.readString(); 
police.workTime = source.readInt(); 
return police; 
} 
@Override 
public Police[] newArray(int size) { 
return new Police[size]; 
} 
}; 
@Override 
public int describeContents() { 
return 0; 
} 
@Override 
public void writeToParcel(Parcel parcel, int flags) { 
parcel.writeString(name); 
parcel.writeInt(workTime); 
} 
}