zoukankan      html  css  js  c++  java
  • Intent传递对象的两种方法(Serializable,Parcelable)

    今天讲一下Android中Intent中如何传递对象,就我目前所知道的有两种方法,一种是Bundle.putSerializable(Key,Object);另一种是Bundle.putParcelable(Key, Object);当然这些Object是有一定的条件的,前者是实现了Serializable接口,而后者是实现了Parcelable接口
    第一步:新建一个Android工程命名为IntentDemo
    第二步:修改main.xml布局文件

     java代码

        <?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

        package cn.caiwb.intent;  
        import java.io.Serializable;  
        public class Person implements Serializable {  
         
            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

        package cn.caiwb.intent;  
        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);  
            }  
        }  
    

    第四步:修改IntentDemo.java,并且新建两个Activity,一个是IntentDemo1.java,别一个是IntentDemo2.java.分别用来显示Person对像数据,和Book对象数据:,代码分别如下:
    IntentDemo.java

        package cn.caiwb.intent;  
        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 IntentDemo extends Activity implements OnClickListener {  
              
            private Button sButton,pButton;  
            public  final static String SER_KEY = "cn.caiwb.intent.ser";  
            public  final static String PAR_KEY = "cn.caiwb.intent.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,IntentDemo1.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,IntentDemo2.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();  
                }  
            }  
        }  
    

      IntentDemo1.java

        package cn.caiwb.intent;  
        import android.app.Activity;  
        import android.os.Bundle;  
        import android.widget.TextView;  
        public class IntentDemo1 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);  
            }  
        }  
    

      IntentDemo2.java

        package cn.caiwb.intent;  
        import android.app.Activity;  
        import android.os.Bundle;  
        import android.widget.TextView;  
        public class IntentDemo2 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);  
            }  
        }  
    

      ok..

    转自iteye:http://caiwb1990.iteye.com/blog/1404201

    Crazy Cherry:everything is possible!
  • 相关阅读:
    函数(五)——装饰器,递归调用,匿名函数
    函数(四)——装饰器
    函数(三)
    函数(二)
    函数(一)
    python基础(九)
    python基础(八)
    python基础(七)
    javaweb开发 idea ssm开发(二)
    PHP计算两个经纬度地点之间的距离
  • 原文地址:https://www.cnblogs.com/userbibi/p/2422943.html
Copyright © 2011-2022 走看看