android intent传递数据
生活随笔
收集整理的這篇文章主要介紹了
android intent传递数据
小編覺得挺不錯的,現在分享給大家,幫大家做個參考.
說到intent傳遞數據,其實我是經常用到,不過之前用的都是簡單的傳遞String,int,boolean的簡單數據。昨天,我需要傳遞一個自定義的實體類時,發現自己不會,所以在網上搜索了一些資料,自己做了出來。現在把intent的使用整理一下,以后方便使用。
1.intent傳遞簡單數據。
2.intent傳遞object對象
2.1 使用Serializable方式
這個,首先必須把自定義的類實現Serializable接口,
用Serializable方式傳遞Object的語法:bundle.putSerializable(key,object);
用Serializable方式接收Object的語法:object=(Object) getIntent().getSerializableExtra(key);2.2 使用Parcelable方式 前提:Object需要實現Parcelable接口 用Parcelable方式傳遞Object的語法:bundle.putParcelable(key,object); 用Parcelable方式接收Object的語法:object=(Object) getIntent().getParcelableExtra(key); 實現Parcelable接口的類比較復雜,Parcelable是個什么東西呢? Android提供了一種新的類型:Parcel,被用作封裝數據的容器,封裝后的數據可以通過Intent或IPC傳遞。 除了基本類型以外,只有實現了Parcelable接口的類才能被放入Parcel中。 實現Parcelable接口需要實現三個方法: 1)writeToParcel方法。該方法將類的數據寫入外部提供的Parcel中。 聲明:writeToParcel(Parcel dest, int flags)。 2)describeContents方法。直接返回0就可以。 3)靜態的Parcelable.Creator<T>接口,本接口有兩個方法:createFromParcel(Parcel in) 實現從in中創建出類的實例的功能。
package com.wirelessqa.testintent; import android.os.Parcel;
import android.os.Parcelable; /**
?* Object需要實現Parcelable接口
?* @author bixiaopeng 2013-2-18 上午11:32:19
?*/
public class ParInfo implements Parcelable{
??? private String name;
??? private String website;
??? private String weibo;
??? public ParInfo(){ }
??? public ParInfo(String name, String website, String weibo){
??????? this.name = name;
??????? this.website = website;
??????? this.weibo = weibo;
??? } public String getName() {
??????? return name;
??? } public void setName(String name) {
??????? this.name = name;
??? } public String getWebsite() {
??????? return website;
??? } public void setWebsite(String website) {
??????? this.website = website;
??? } public String getWeibo() {
??????? return weibo;
??? } public void setWeibo(String weibo) {
??????? this.weibo = weibo;
??? }
??? @Override
??? public int describeContents() {
??????? // TODO Auto-generated method stub
??????? return 0;
??? }
??? //該方法將類的數據寫入外部提供的Parcel中。
??? @Override
??? public void writeToParcel(Parcel dest, int flags) {
??????? dest.writeString(name);
??????? dest.writeString(website);
??????? dest.writeString(weibo);
??? } public static final Parcelable.Creator<ParInfo> CREATOR? = new Creator<ParInfo>() {
??????? //實現從source中創建出類的實例的功能
??????? @Override
??????? public ParInfo createFromParcel(Parcel source) {
??????????? ParInfo parInfo? = new ParInfo();
??????????? parInfo.name = source.readString();
??????????? parInfo.website= source.readString();
??????????? parInfo.weibo = source.readString();
??????????? return parInfo;
??????? }
??????? //創建一個類型為T,長度為size的數組
??????? @Override
??????? public ParInfo[] newArray(int size) {
??????????? return new ParInfo[size];
??????? }
??? };?? }
3.intent傳遞list<object>數據。 首先,object需要實現Serializable接口, 然后發送數據intent.putExtra("listobj",?(Serializable)?listObj);? 接收數據?ArrayList<SerInfo>?listObj?=??(ArrayList<SerInfo>)?getIntent().getSerializableExtra("listobj");?
intent傳遞數據就講完了。
就這么簡單。
總結
以上是生活随笔為你收集整理的android intent传递数据的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: android 打包jar包
- 下一篇: android fragment on