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())){}