Android 高手进阶教程:[15]传递对象方法
1、新建一个Android工程命名为ObjectTranDemo(类比较多哦!)目录结构如下图:
![Android 高手进阶教程:[15]传递对象方法](https://exp-picture.cdn.bcebos.com/5a5a00def4dca039bc39145f58d96975f3c40dbe.jpg)
2、修改main.xml布局文件(这里我增加了两个按钮)代码如下viewplaincopytoclipboardprint?<?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="http://schemas.android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="WelcometoMrwei'sblog."/><Buttonandroid:id="@+id/button1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Serializable"/><Buttonandroid:id="@+id/button2"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Parcelable"/></LinearLayout><?xmlversion="1.0"encoding="utf-8"?><LinearLayoutxmlns:android="android.com/apk/res/android"android:orientation="vertical"android:layout_width="fill_parent"android:layout_height="fill_parent"><TextViewandroid:layout_width="fill_parent"android:layout_height="wrap_content"android:text="WelcometoMrwei'sblog."/><Buttonandroid:id="@+id/button1"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Serializable"/><Buttonandroid:id="@+id/button2"android:layout_width="fill_parent"android:layout_height="wrap_content"android:text="Parcelable"/></LinearLayout>
3、新建两个类一个是Person.ja箪滹埘麽va实现Serializable接口,另一个Book.java实现Parcelable接口,代码分别如下:P髫潋啜缅erson.java:viewplaincopytoclipboardprint?packagecom.tutor.objecttran;importjava.io.Serializable;publicclassPersonimplementsSerializable{privatestaticfinallongserialVersionUID=-7060210544600464481L;privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}}packagecom.tutor.objecttran;importjava.io.Serializable;publicclassPersonimplementsSerializable{privatestaticfinallongserialVersionUID=-7060210544600464481L;privateStringname;privateintage;publicStringgetName(){returnname;}publicvoidsetName(Stringname){this.name=name;}publicintgetAge(){returnage;}publicvoidsetAge(intage){this.age=age;}}Book.java:viewplaincopytoclipboardprint?packagecom.tutor.objecttran;importandroid.os.Parcel;importandroid.os.Parcelable;publicclassBookimplementsParcelable{privateStringbookName;privateStringauthor;privateintpublishTime;publicStringgetBookName(){returnbookName;}publicvoidsetBookName(StringbookName){this.bookName=bookName;}publicStringgetAuthor(){returnauthor;}publicvoidsetAuthor(Stringauthor){this.author=author;}publicintgetPublishTime(){returnpublishTime;}publicvoidsetPublishTime(intpublishTime){this.publishTime=publishTime;}publicstaticfinalParcelable.Creator<Book>CREATOR=newCreator<Book>(){publicBookcreateFromParcel(Parcelsource){BookmBook=newBook();mBook.bookName=source.readString();mBook.author=source.readString();mBook.publishTime=source.readInt();returnmBook;}publicBook[]newArray(intsize){returnnewBook[size];}};publicintdescribeContents(){return0;}publicvoidwriteToParcel(Parcelparcel,intflags){parcel.writeString(bookName);parcel.writeString(author);parcel.writeInt(publishTime);}}packagecom.tutor.objecttran;importandroid.os.Parcel;importandroid.os.Parcelable;publicclassBookimplementsParcelable{privateStringbookName;privateStringauthor;privateintpublishTime;publicStringgetBookName(){returnbookName;}publicvoidsetBookName(StringbookName){this.bookName=bookName;}publicStringgetAuthor(){returnauthor;}publicvoidsetAuthor(Stringauthor){this.author=author;}publicintgetPublishTime(){returnpublishTime;}publicvoidsetPublishTime(intpublishTime){this.publishTime=publishTime;}publicstaticfinalParcelable.Creator<Book>CREATOR=newCreator<Book>(){publicBookcreateFromParcel(Parcelsource){BookmBook=newBook();mBook.bookName=source.readString();mBook.author=source.readString();mBook.publishTime=source.readInt();returnmBook;}publicBook[]newArray(intsize){returnnewBook[size];}};publicintdescribeContents(){return0;}publicvoidwriteToParcel(Parcelparcel,intflags){parcel.writeString(bookName);parcel.writeString(author);parcel.writeInt(publishTime);}}
4、修改ObjectTranDemo.java,并且新建两个Activity,一个是ObjectTranDemo1.java,别一个是ObjectTranDemo2.java.分别用来显示Person对像数据,和Book对象数据:,代码分别如下:ObjectTranDemo.java:viewplaincopytoclipboardprint?packagecom.tutor.objecttran;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;publicclassObjectTranDemoextendsActivityimplementsOnClickListener{privateButtonsButton,pButton;publicfinalstaticStringSER_KEY="com.tutor.objecttran.ser";publicfinalstaticStringPAR_KEY="com.tutor.objecttran.par";publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);setupViews();}//我的一贯作风呵呵publicvoidsetupViews(){sButton=(Button)findViewById(R.id.button1);pButton=(Button)findViewById(R.id.button2);sButton.setOnClickListener(this);pButton.setOnClickListener(this);}//Serializeable传递对象的方法publicvoidSerializeMethod(){PersonmPerson=newPerson();mPerson.setName("frankie");mPerson.setAge(25);IntentmIntent=newIntent(this,ObjectTranDemo1.class);BundlemBundle=newBundle();mBundle.putSerializable(SER_KEY,mPerson);mIntent.putExtras(mBundle);startActivity(mIntent);}//Pacelable传递对象方法publicvoidPacelableMethod(){BookmBook=newBook();mBook.setBookName("AndroidTutor");mBook.setAuthor("Frankie");mBook.setPublishTime(2010);IntentmIntent=newIntent(this,ObjectTranDemo2.class);BundlemBundle=newBundle();mBundle.putParcelable(PAR_KEY,mBook);mIntent.putExtras(mBundle);startActivity(mIntent);}//铵钮点击事件响应publicvoidonClick(Viewv){if(v==sButton){SerializeMethod();}else{PacelableMethod();}}}packagecom.tutor.objecttran;importandroid.app.Activity;importandroid.content.Intent;importandroid.os.Bundle;importandroid.view.View;importandroid.view.View.OnClickListener;importandroid.widget.Button;publicclassObjectTranDemoextendsActivityimplementsOnClickListener{privateButtonsButton,pButton;publicfinalstaticStringSER_KEY="com.tutor.objecttran.ser";publicfinalstaticStringPAR_KEY="com.tutor.objecttran.par";publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);setContentView(R.layout.main);setupViews();}//我的一贯作风呵呵publicvoidsetupViews(){sButton=(Button)findViewById(R.id.button1);pButton=(Button)findViewById(R.id.button2);sButton.setOnClickListener(this);pButton.setOnClickListener(this);}//Serializeable传递对象的方法publicvoidSerializeMethod(){PersonmPerson=newPerson();mPerson.setName("frankie");mPerson.setAge(25);IntentmIntent=newIntent(this,ObjectTranDemo1.class);BundlemBundle=newBundle();mBundle.putSerializable(SER_KEY,mPerson);mIntent.putExtras(mBundle);startActivity(mIntent);}//Pacelable传递对象方法publicvoidPacelableMethod(){BookmBook=newBook();mBook.setBookName("AndroidTutor");mBook.setAuthor("Frankie");mBook.setPublishTime(2010);IntentmIntent=newIntent(this,ObjectTranDemo2.class);BundlemBundle=newBundle();mBundle.putParcelable(PAR_KEY,mBook);mIntent.putExtras(mBundle);startActivity(mIntent);}//铵钮点击事件响应publicvoidonClick(Viewv){if(v==sButton){SerializeMethod();}else{PacelableMethod();}
5、}}ObjectTranDemo1.java:viewplaincopytoclipboardprint?packagecom.tutor.objecttran;importandroid.app.Activity;importandroid.os.Bundle;importandroid.widget.TextView;publicclassObjectTranDemo1extendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);TextViewmTextView=newTextView(this);PersonmPerson=(Person)getIntent().getSerializableExtra(ObjectTranDemo.SER_KEY);mTextView.setText("Younameis:"+mPerson.getName()+"\n"+"Youageis:"+mPerson.getAge());setContentView(mTextView);}}packagecom.tutor.objecttran;importandroid.app.Activity;importandroid.os.Bundle;importandroid.widget.TextView;publicclassObjectTranDemo1extendsActivity{@OverridepublicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);TextViewmTextView=newTextView(this);PersonmPerson=(Person)getIntent().getSerializableExtra(ObjectTranDemo.SER_KEY);mTextView.setText("Younameis:"+mPerson.getName()+"\n"+"Youageis:"+mPerson.getAge());setContentView(mTextView);}}ObjectTranDemo2.java:viewplaincopytoclipboardprint?packagecom.tutor.objecttran;importandroid.app.Activity;
6、importandroid.os.Bundle;importandroid.widget.TextView;publicclassObjectTranDemo2extendsActivity{publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);TextViewmTextView=newTextView(this);BookmBook=(Book)getIntent().getParcelableExtra(ObjectTranDemo.PAR_KEY);mTextView.setText("Booknameis:"+mBook.getBookName()+"\n"+"Authoris:"+mBook.getAuthor()+"\n"+"PublishTimeis:"+mBook.getPublishTime());setContentView(mTextView);}}packagecom.tutor.objecttran;importandroid.app.Activity;importandroid.os.Bundle;importandroid.widget.TextView;publicclassObjectTranDemo2extendsActivity{publicvoidonCreate(BundlesavedInstanceState){super.onCreate(savedInstanceState);TextViewmTextView=newTextView(this);BookmBook=(Book)getIntent().getParcelableExtra(ObjectTranDemo.PAR_KEY);mTextView.setText("Booknameis:"+mBook.getBookName()+"\n"+"Authoris:"+mBook.getAuthor()+"\n"+"PublishTimeis:"+mBook.getPublishTime());setContentView(mTextView);}}
7、比较重要的一步啦,修改AndroidManifest.xml文件(将两个新增的Activity,O芟鲠阻缒bjectTranDemo1,ObjectTranDemo2)申明一下代码如下(第14,15行):viewplaincopytoclipboardprint?<?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="android.com/apk/res/android"package="com.tutor.objecttran"android:versionCode="1"android:versionName="1.0"><applicationandroid:icon="@drawable/icon"android:label="@string/app_name"><activityandroid:name=".ObjectTranDemo"android:label="@string/app_name"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity><activityandroid:name=".ObjectTranDemo1"></activity><activityandroid:name=".ObjectTranDemo2"></activity></application><uses-sdkandroid:minSdkVersion="7"/></manifest><?xmlversion="1.0"encoding="utf-8"?><manifestxmlns:android="android.com/apk/res/android"package="com.tutor.objecttran"android:versionCode="1"android:versionName="1.0"><applicationandroid:icon="@drawable/icon"android:label="@string/app_name"><activityandroid:name=".ObjectTranDemo"android:label="@string/app_name"><intent-filter><actionandroid:name="android.intent.action.MAIN"/><categoryandroid:name="android.intent.category.LAUNCHER"/></intent-filter></activity><activityandroid:name=".ObjectTranDemo1"></activity><activityandroid:name=".ObjectTranDemo2"></activity></application><uses-sdkandroid:minSdkVersion="7"/></manifest>
8、运行上述工程查看效果图啦:首界面
![Android 高手进阶教程:[15]传递对象方法](https://exp-picture.cdn.bcebos.com/125ed0ecd3d9697541e2362ad243040149fe09be.jpg)
9、点击Serializable按钮
![Android 高手进阶教程:[15]传递对象方法](https://exp-picture.cdn.bcebos.com/58021a0148fe1e42e44dde62c2299a88381303be.jpg)
10、点击Parcelable按钮:
![Android 高手进阶教程:[15]传递对象方法](https://exp-picture.cdn.bcebos.com/5c2a1ad149299a888435325667eeadbcbf2f7fbe.jpg)