Android實現Parcelable對象序列化的實例

bundle.putParcelable可以實現傳遞對象,但是這個對象的類必須實現Parcelable接口才能夠使用。

下面是一個簡單的在Activity之間傳遞對象的例子。

parcel實現參數的序列化,把類對象序列化為齊位的二進制流,提高傳輸的效率。

 

 

Parcelable類。最主要的類,也就是我們要傳送的對象的類,需要實現Parcelable接口。

[java]
import android.os.Parcel;   
import android.os.Parcelable;   
   
public class BenParcelable implements Parcelable {   
   
    public String name;   
   
    public int age;   
   
    public String profession;   
   
    public BenParcelable(String name, int age, String profession) {   
        this.name = name;   
        this.age = age;   
        this.profession = profession;   
    }   
   
    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;   
    }   
   
    public String getprofession() {   
        return profession;   
    }   
   
    public void setprofession(String profession) {   
        this.profession = profession;   
    }   
   
    @Override   
    public int describeContents() {   
        return 0;   
    }   
   
    @Override   
    public void writeToParcel(Parcel parcel, int flag) {   
        parcel.writeString(name);   
        parcel.writeInt(age);   
        parcel.writeString(profession);   
    }   
   
    public static final Creator<BenParcelable> CREATOR = new Creator<BenParcelable>() {   
        public BenParcelable createFromParcel(Parcel in) {   
            return new BenParcelable(in);   
        }   
   
        public BenParcelable[] newArray(int size) {   
            return new BenParcelable[size];   
        }   
    };   
   
    private BenParcelable(Parcel in) {   
        name = in.readString();   
        age = in.readInt();   
        profession = in.readString();   
    }   
}   

import android.os.Parcel; 
import android.os.Parcelable; 
 
public class BenParcelable implements Parcelable { 
 
    public String name; 
 
    public int age; 
 
    public String profession; 
 
    public BenParcelable(String name, int age, String profession) { 
        this.name = name; 
        this.age = age; 
        this.profession = profession; 
    } 
 
    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; 
    } 
 
    public String getprofession() { 
        return profession; 
    } 
 
    public void setprofession(String profession) { 
        this.profession = profession; 
    } 
 
    @Override 
    public int describeContents() { 
        return 0; 
    } 
 
    @Override 
    public void writeToParcel(Parcel parcel, int flag) { 
        parcel.writeString(name); 
        parcel.writeInt(age); 
        parcel.writeString(profession); 
    } 
 
    public static final Creator<BenParcelable> CREATOR = new Creator<BenParcelable>() { 
        public BenParcelable createFromParcel(Parcel in) { 
            return new BenParcelable(in); 
        } 
 
        public BenParcelable[] newArray(int size) { 
            return new BenParcelable[size]; 
        } 
    }; 
 
    private BenParcelable(Parcel in) { 
        name = in.readString(); 
        age = in.readInt(); 
        profession = in.readString(); 
    } 

ParcelableActivity類,傳遞對象的Activity類。

 

[java]
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 ParcelableActivity extends Activity {   
   
    private Button myButton;   
   
    @Override   
    public void onCreate(Bundle savedInstanceState) {   
   
        super.onCreate(savedInstanceState);   
   
        setContentView(R.layout.main);   
   
        myButton = (Button) findViewById(R.id.myButton);   
   
        myButton.setOnClickListener(new OnClickListener() {   
   
            @Override   
            public void onClick(View arg0) {   
   
                BenParcelable benParcelable = new BenParcelable("BenZeph", 23,   
                        "Java/Android Engineer");   
   
                Intent intent = new Intent();   
   
                intent.setClass(getApplicationContext(),   
                        GetParcelableActivity.class);   
   
                Bundle bundle = new Bundle();   
   
                bundle.putParcelable("Ben", benParcelable);   
   
                intent.putExtras(bundle);   
   
                startActivity(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 ParcelableActivity extends Activity { 
 
    private Button myButton; 
 
    @Override 
    public void onCreate(Bundle savedInstanceState) { 
 
        super.onCreate(savedInstanceState); 
 
        setContentView(R.layout.main); 
 
        myButton = (Button) findViewById(R.id.myButton); 
 
        myButton.setOnClickListener(new OnClickListener() { 
 
            @Override 
            public void onClick(View arg0) { 
 
                BenParcelable benParcelable = new BenParcelable("BenZeph", 23, 
                        "Java/Android Engineer"); 
 
                Intent intent = new Intent(); 
 
                intent.setClass(getApplicationContext(), 
                        GetParcelableActivity.class); 
 
                Bundle bundle = new Bundle(); 
 
                bundle.putParcelable("Ben", benParcelable); 
 
                intent.putExtras(bundle); 
 
                startActivity(intent); 
 
            } 
        }); 
    } 

GetParcelableActivity類,接收序列化對象的Activity類。

 

[java]
<SPAN style="FONT-SIZE: 18px"><STRONG>import android.app.Activity;   
import android.os.Bundle;   
   
public class GetParcelableActivity extends Activity {   
    @Override   
    protected void onCreate(Bundle savedInstanceState) {   
   
        super.onCreate(savedInstanceState);   
   
        setContentView(R.layout.main);   
   
        BenParcelable parcelable = getIntent().getParcelableExtra("Ben");   
   
        System.out.println(parcelable.getName());   
   
        System.out.println(parcelable.getAge());   
           
        System.out.println(parcelable.getprofession());   
   
    }   
   
}  </STRONG></SPAN> 

import android.app.Activity; 
import android.os.Bundle; 
 
public class GetParcelableActivity extends Activity { 
    @Override 
    protected void onCreate(Bundle savedInstanceState) { 
 
        super.onCreate(savedInstanceState); 
 
        setContentView(R.layout.main); 
 
        BenParcelable parcelable = getIntent().getParcelableExtra("Ben"); 
 
        System.out.println(parcelable.getName()); 
 
        System.out.println(parcelable.getAge()); 
         
        System.out.println(parcelable.getprofession()); 
 
    } 
 

 

You May Also Like