Android高手进阶教程(十七)之---Android中Intent传递对象的两种方法(Serializable,Parcelable)!
大家好,好久不见,今天要给大家讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key,Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口,为了让大家更容易理解我还是照常写了一个简单的Demo,大家就一步一步跟我来吧!
第一步:新建一个Android工程命名为ObjectTranDemo(类比较多哦!)目录结构如下图:
第二步:修改main.xml布局文件(这里我增加了两个按钮)代码如下view plaincopy toclipboardprint?
<?xml version="1.0"encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.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="Welcome to Mr wei's blog."
/>
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Serializable"
/>
<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Parcelable"
/>
</LinearLayout>
<?xml version="1.0"encoding="utf-8"?>
<LinearLayout xmlns:android="http://schemas.android.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="Welcome to Mr wei's blog."
/>
<Button
android:id="@+id/button1"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Serializable"
/>
<Button
android:id="@+id/button2"
android:layout_width="fill_parent"
android:layout_height="wrap_content"
android:text="Parcelable"
/>
</LinearLayout>
第三步:新建两个类一个是Person.java实现Serializable接口,另一个Book.java实现Parcelable接口,代码分别如下:
Person.java:
view plaincopy to clipboardprint?
packagecom.tutor.objecttran;
importjava.io.Serializable;
public class Person implements Serializable{
privatestatic final long serialVersionUID =-7060210544600464481L;
privateString name;
private intage;
publicString getName() {
return name;
}
public voidsetName(String name) {
this.name = name;
}
public intgetAge() {
return age;
}
public voidsetAge(int age) {
this.age = age;
}
}
package com.tutor.objecttran;
import java.io.Serializable;
public class Person implements Serializable {
private static final long serialVersionUID =-7060210544600464481L;
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;
}
}
Book.java:
view plaincopy to clipboardprint?
packagecom.tutor.objecttran;
import android.os.Parcel;
importandroid.os.Parcelable;
public class Book implements Parcelable{
privateString bookName;
privateString author;
private intpublishTime;
publicString getBookName() {
return bookName;
}
public voidsetBookName(String bookName){
this.bookName = bookName;
}
publicString getAuthor() {
return author;
}
public voidsetAuthor(String author){
this.author = author;
}
public intgetPublishTime() {
return publishTime;
}
public voidsetPublishTime(int publishTime){
this.publishTime =publishTime;
}
publicstatic final Parcelable.Creator<Book>CREATOR = new Creator<Book>(){
public Book createFromParcel(Parcel source){
Book mBook = new Book();
mBook.bookName =source.readString();
mBook.author =source.readString();
mBook.publishTime =source.readInt();
return mBook;
}
public Book[] newArray(int size){