使用Intent傳遞物件
Intent的用法以及非常簡單了,可以利用它來啟動活動,傳送廣播,啟動服務等,當然,也可以用來傳值
Intent intent=new Intent(OneActivity.this,TwoActivity.class); intent.putExtra("string_data","hello"); startActivity(intent);
但是,當我們想要傳遞一些自定義的物件的時候,好像就有點無從下手了
這就要說到傳遞物件的兩種方式: Serializable和Parcelable
Serializable是序列化的意思,將一個物件轉換成礦業儲存或者可以傳輸的狀態,序列化後的物件可以在網路上進行傳輸,也可以儲存到本地。而序列化的方法也很簡單,只需要讓一個類去實現Serializable這個介面就行了
比如說有一個Apple類
public class Apple implements Aerializable{ private Stirng name; private int price; public String getName(){ return name; } public void setName(name){ this.name=name; } public String getPrice(){ return price; } public void setPrice(int price){ this.price=price; } }
然後在FirstActivity中也和簡單
Apple apple=new Apple(); apple.setName=("紅富士"); apple.setprice=(10); Intent intent=new Intent(FirstActivity.this,SecondActivity.class); intent.putExtra("Apple_data",apple); startActivity(intent);
而獲取這個物件也很簡單
Apple apple=(Apple) getIntent.getSerializableExtra(apple_data);
Parcelable也可以實現相同的效果,不過不同於將物件進行序列化,Parcelable方法的實現原理是將一個完整的物件進行分解,而分解後的每一部分都是Intent所支援的資料型別
public class Apple implements Parcelable{ private Stirng name; private int price; public String getName(){ return name; } public void setName(name){ this.name=name; } public String getPrice(){ return price; } public void setPrice(int price){ this.price=price; } @Override public int describeContents(){ return 0; } @Override public void writeToParcel(Parcel dest,int flags){ dest.writeString(name); dest.writeInt(price); } public static final Parcelable.Creator<Person> CREATOR =new Parcelable.Creator<Person>(){ @Override public Apple creatFromParcel(Parcel source){ Apple apple=new Apple(); apple.name=source.readString(); apple.price=source.readInte(); return apple; } @Override public Apple[] newArray(int size){ return new Person[size]; } } }
在FirstActivity中的操作和Serializable一樣
接受為
Apple apple=(Apple) getIntent.getParcelableExtra(apple_data);
來自 “ ITPUB部落格 ” ,連結:http://blog.itpub.net/69917874/viewspace-2683357/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- Android intent傳遞list或物件AndroidIntent物件
- Android 通過 Intent 傳遞類物件AndroidIntent物件
- 探究intent傳遞大小限制Intent
- 將 Intent 序列化,像 Uri 一樣傳遞 Intent!!!Intent
- Android Intent 傳遞資料大小限制AndroidIntent
- 物件鎖:傳遞物件鎖物件
- AXIS - 傳遞自定義物件物件
- 探索startActivity流程及在Activity間是如何傳遞Intent的Intent
- Intent傳遞資料過大導致:javabinder !!! FAILED BINDER TRANSACTION !!!IntentJavaAI
- 一人一貓旅行記之Intent傳遞資料原理Intent
- PHP中物件的引用傳遞PHP物件
- Android Fragment 間物件傳遞AndroidFragment物件
- 使用arguments物件獲取函式傳遞的引數物件函式
- 使用strutstestcase如何在請求引數中傳遞物件...物件
- 4Intent物件簡介Intent物件
- 系統許可權傳遞和物件許可權傳遞的測試物件
- 給vue元件傳遞物件或是陣列Vue元件物件陣列
- PHP 物件導向 (四)類物件賦值為引用傳遞PHP物件賦值
- html、php和js值的傳遞(使用ajax進行傳遞)HTMLPHPJS
- Android中Intent物件與Intent Filter過濾匹配過程詳解AndroidIntent物件Filter
- 值傳遞和引用傳遞
- 值傳遞與引用傳遞
- ajax從JSP傳遞物件陣列到後臺JS物件陣列
- 如何在JSP頁面中傳遞類物件JS物件
- Netty使用及事件傳遞Netty事件
- python中的引用傳遞,可變物件,不可變物件,list注意點Python物件
- 一個STL物件的DLL邊界傳遞問題物件
- 【轉】使用oracle pipe傳遞訊息Oracle
- JavaScript的值傳遞和引用傳遞JavaScript
- 快速搞懂值傳遞與引用傳遞
- go 值傳遞和地址傳遞的例子Go
- Java - 是值傳遞還是引用傳遞Java
- Java中的值傳遞和引用傳遞Java
- Intent傳值與Bundle傳值的區別(原始碼分析)Intent原始碼
- [ASP.NET] 使用Request 傳遞引數ASP.NET
- 資訊傳遞
- vue---元件間傳遞訊息(父子傳遞訊息,兄弟傳遞訊息)Vue元件
- JS的方法引數傳遞(按值傳遞)JS