Android Intent傳值 Serializable Parcelable

Intent傳值,使用putExtra()時所支持的數據類型是有限的。使用Intent傳遞對象經過Serializable和Parcelable方式實現。java

一. Serializable方式:網絡

    Serializable是序列化的意思,表示將一個對象轉換成可存儲或傳輸的狀態。序列化後的對象能夠在網絡上進行傳輸或保存到本地。this

    實現方法:將數據類實現Serializable接口。spa

例如:code

public class Person implements serializable{
    String name;
    
    public void setName(String name){
        this.name = name;
    }
    
    public String getName(){
        return name;
    }
 }

Activity跳轉時:intent.putExtra("data", Person實例);orm

另外一個Activity獲取: Person person = (Person) getIntent().getSerializableExtra("data");對象

二. Parcelable方式:接口

     Parcelable是將一個對象進行分解,而分解後的每一部分都是一個Intent所支持的數據類型。get

     實現方法:it

      類實現Parcelable接口,並重寫describeContents()和writeToParcel()兩個方法。再提供一個名爲CREATOR的常量,建立Parcelable.Creator接口的一個實現,並泛型指定爲Person.接着重寫createFromParcel()和newArray()方法。

Activity跳轉時:intent.putExtra("data", Person實例);

另外一個Activity獲取: Person person = (Person) getIntent().getParcelableExtra("data");

注意:Parcelable的效率比Serializable高一些。


三.頁碼跳轉獲取傳值

Intent intent = getIntent();
String className = getArguments() != null ? getArguments().getString("classname") : null;
if (className == null) {
    className = intent.getComponent().getClassName();
}
if (className.equals(Class1.class.getName())){}
相關文章
相關標籤/搜索