Android中傳遞對象資料的方法

來源:互聯網
上載者:User

在Android應用的開發中,如果我們需要在不同的模組(比如不同的Activity之間)之間傳遞資料,通常有以下兩種方法:

1. 利用Intent對象攜帶資料

通過查詢Intent/Bundle的API文檔,我們可以獲知,Intent/Bundle支援傳遞基本類型的資料和基本類型的數組資料,以及String/CharSequence類型的資料和String/CharSequence類型的數組資料。而對於其它類型的資料貌似無能為力,其實不然,我們可以在Intent/Bundle的API中看到Intent/Bundle還可以傳遞Parcelable(包裹化,郵包)和Serializable(序列化)類型的資料,以及它們的數組/列表資料。

所以要讓非基本類型和非String/CharSequence類型的資料通過Intent/Bundle來進行傳輸,我們就需要在資料類型中實現Parcelable介面或是Serializable介面。

1.1 利用Parcelable介面實現資料通過Intent/Bundle進行傳遞

/**
* 代表一個人的資訊
* @author gansc
*/
public class PersonInfo implements Parcelable
{
public String iName; // 人名
public int iSex; // 性別
public String iId; // 社會安全號碼碼
public String iMobileNumber; // 手機號碼
public String iEMailAddr; // 郵箱地址


// From Parcelable
@Override
public int describeContents()
{
return 0;
}
    // From Parcelable
// 儲存到包裹中
@Override
public void writeToParcel(Parcel dest, int flags)
{
dest.writeString(iName);
dest.writeInt(iSex);
dest.writeString(iId);
dest.writeString(iMobileNumber);
dest.writeString(iEMailAddr);
}

// 實現Parcelable介面的類型中,必須有一個實現了Parcelable.Creator介面的靜態常量成員欄位,
// 並且它的名字必須為CREATOR的
public static final Parcelable.Creator<PersonInfo> CREATOR
= new Parcelable.Creator<PersonInfo>()
{
// From Parcelable.Creator
@Override
public PersonInfo createFromParcel(Parcel in)
{
PersonInfo brief = new PersonInfo();

// 從包裹中讀出資料
brief.iName = in.readString();
brief.iSex = in.readInt();
brief.iId = in.readString();
brief.iMobileNumber = in.readString();

brief.iEMailAddr = in.readString();

return brief;
}



        // From Parcelable.Creator
        @Override
        public PersonInfo[] newArray(int size)
        {
            return new PersonInfo[size];
        }
    };
}

2. 定義一個公開的靜態成員變數,在不同的模組中都含有這個控制代碼,並且利用這個控制代碼來來實現在不同的模組之間傳遞資料的需求。

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.