Intent如何传递对象

来源:互联网 发布:java连接符 编辑:程序博客网 时间:2024/05/17 06:40
package com.tutor.objecttran;import android.os.Parcel;import android.os.Parcelable;public class Book implements Parcelable {private String bookName;private String author;private int publishTime;public String getBookName() {return bookName;}public void setBookName(String bookName) {this.bookName = bookName;}public String getAuthor() {return author;}public void setAuthor(String author) {this.author = author;}public int getPublishTime() {return publishTime;}public void setPublishTime(int publishTime) {this.publishTime = publishTime;}public static 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) {return new Book[size];}};public int describeContents() {return 0;}public void writeToParcel(Parcel parcel, int flags) {parcel.writeString(bookName);parcel.writeString(author);parcel.writeInt(publishTime);}}
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;}}

package com.tutor.objecttran;import android.app.Activity;import android.content.Intent;import android.os.Bundle;import android.view.View;import android.view.View.OnClickListener;import android.widget.Button;public class ObjectTranDemo extends Activity implements OnClickListener {    private Button sButton,pButton;public  final static String SER_KEY = "com.tutor.objecttran.ser";public  final static String PAR_KEY = "com.tutor.objecttran.par";    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        setContentView(R.layout.main);           setupViews();            }        //我的一贯作风呵呵    public void setupViews(){    sButton = (Button)findViewById(R.id.button1);    pButton = (Button)findViewById(R.id.button2);    sButton.setOnClickListener(this);    pButton.setOnClickListener(this);    }    //Serializeable传递对象的方法    public void SerializeMethod(){    Person mPerson = new Person();    mPerson.setName("frankie");    mPerson.setAge(25);    Intent mIntent = new Intent(this,ObjectTranDemo1.class);    Bundle mBundle = new Bundle();    mBundle.putSerializable(SER_KEY,mPerson);    mIntent.putExtras(mBundle);        startActivity(mIntent);    }    //Pacelable传递对象方法    public void PacelableMethod(){    Book mBook = new Book();    mBook.setBookName("Android Tutor");    mBook.setAuthor("Frankie");    mBook.setPublishTime(2010);    Intent mIntent = new Intent(this,ObjectTranDemo2.class);    Bundle mBundle = new Bundle();    mBundle.putParcelable(PAR_KEY, mBook);    mIntent.putExtras(mBundle);        startActivity(mIntent);    }    //铵钮点击事件响应public void onClick(View v) {if(v == sButton){SerializeMethod();}else{PacelableMethod();}}}

package com.tutor.objecttran;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class ObjectTranDemo1 extends Activity {    @Override    public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);                TextView mTextView = new TextView(this);        Person mPerson = (Person)getIntent().getSerializableExtra(ObjectTranDemo.SER_KEY);        mTextView.setText("You name is: " + mPerson.getName() + "/n"+        "You age is: " + mPerson.getAge());                setContentView(mTextView);    }}

package com.tutor.objecttran;import android.app.Activity;import android.os.Bundle;import android.widget.TextView;public class ObjectTranDemo2 extends Activity {     public void onCreate(Bundle savedInstanceState) {        super.onCreate(savedInstanceState);        TextView mTextView = new TextView(this);        Book mBook = (Book)getIntent().getParcelableExtra(ObjectTranDemo.PAR_KEY);        mTextView.setText("Book name is: " + mBook.getBookName()+"/n"+          "Author is: " + mBook.getAuthor() + "/n" +          "PublishTime is: " + mBook.getPublishTime());        setContentView(mTextView);    }}

<?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."    /><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>

<?xml version="1.0" encoding="utf-8"?><manifest xmlns:android="http://schemas.android.com/apk/res/android"      package="com.tutor.objecttran"      android:versionCode="1"      android:versionName="1.0">    <application android:icon="@drawable/icon" android:label="@string/app_name">        <activity android:name=".ObjectTranDemo"                  android:label="@string/app_name">            <intent-filter>                <action android:name="android.intent.action.MAIN" />                <category android:name="android.intent.category.LAUNCHER" />            </intent-filter>        </activity><activity android:name=".ObjectTranDemo1"></activity><activity android:name=".ObjectTranDemo2"></activity>    </application>    <uses-sdk android:minSdkVersion="7" /></manifest>