使用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/,如需轉載,請註明出處,否則將追究法律責任。
相關文章
- 探究intent傳遞大小限制Intent
- 將 Intent 序列化,像 Uri 一樣傳遞 Intent!!!Intent
- Android Intent 傳遞資料大小限制AndroidIntent
- 探索startActivity流程及在Activity間是如何傳遞Intent的Intent
- 一人一貓旅行記之Intent傳遞資料原理Intent
- PHP中物件的引用傳遞PHP物件
- 給vue元件傳遞物件或是陣列Vue元件物件陣列
- PHP 物件導向 (四)類物件賦值為引用傳遞PHP物件賦值
- ajax從JSP傳遞物件陣列到後臺JS物件陣列
- Netty使用及事件傳遞Netty事件
- html、php和js值的傳遞(使用ajax進行傳遞)HTMLPHPJS
- python中的引用傳遞,可變物件,不可變物件,list注意點Python物件
- thinkphp5遇到必須使用Db::raw方法而無法使用json格式傳遞Db物件PHPJSON物件
- 值傳遞和引用傳遞
- Vue + Spring Boot——axios使用GET以引數的方式傳遞物件到SpringMVC解決方案VueSpring BootiOS物件SpringMVC
- 解決SpringBoot在後臺接收前臺傳遞物件方式Spring Boot物件
- JavaScript的值傳遞和引用傳遞JavaScript
- 快速搞懂值傳遞與引用傳遞
- Java的值傳遞和引用傳遞Java
- [ASP.NET] 使用Request 傳遞引數ASP.NET
- go 值傳遞和地址傳遞的例子Go
- c++指標傳遞與引用傳遞C++指標
- Day30--值傳遞和引用傳遞
- Java - 是值傳遞還是引用傳遞Java
- 鴻蒙系統中Intent的使用鴻蒙Intent
- vue---元件間傳遞訊息(父子傳遞訊息,兄弟傳遞訊息)Vue元件
- JS的方法引數傳遞(按值傳遞)JS
- c++ 執行緒函式傳遞資料 物件和變數C++執行緒函式物件變數
- 面試官問:Go 中的引數傳遞是值傳遞還是引用傳遞?面試Go
- chan中傳遞map資料,傳遞的是引用
- golang工作筆記(二)值傳遞與引用傳遞Golang筆記
- 解惑4:java是值傳遞還是引用傳遞Java
- 引數傳遞方式必須是const引用傳遞
- 關於值傳遞和引用傳遞的解釋
- netty 管道傳遞Netty
- 傳遞函式函式
- java值傳遞Java
- 引數傳遞