使用Intent傳遞物件 兩種

2021-08-20 20:26:46 字數 1861 閱讀 8977

平常我們可以在intent中新增一些資料,帶到下乙個介面,就像這樣

/*在第乙個頁面把資料裝進intent*/

intent intent = new intent(firstactivity.this, secondactivity.class);

intent.putextra("data1","hello");

intent.putextra("data2","world");

startactivity(intent);

/*在第二個頁面拿到資料*/

getintent().getstringextra("data1");

getintent().getstringextra("data2");

這樣沒有什麼問題,但是putextra所能支援的資料型別是有限的,如果你想傳遞乙個自定義物件,是不支援的。

使用intent來傳遞物件通常有2種實現方式:serializableparceable

serializable是序列化的意思,表示將乙個物件轉換成可儲存或可傳輸的狀態。序列化後的物件可以在網路上進行傳輸,也可以儲存到本地.序列化的方法很簡單,實現serializable介面就可以了.

1.比如有個person類

public

class

person

implements

serializable

public

void

setname(string name)

public

intgetage()

public

void

setage(int age)

}

接下來在firstactivity使用就非常簡單了

person person = new person();

person.setname("tom");

person.setage(18);

intent intent = new intent(firstactivity.this, secondactivity.class);

intent.putextra("person1",person);

startactivity(intent);

在secondactivity取出物件

序列化物件向下轉型為person物件

person person=(person)getintent().getserializableextra("person1");
不同於將物件序列化.parceable是將乙個完整的物件進行分解,而分解後的每一部分都是intent所支援的資料型別.

person類實現parcelable 介面

public

class

person

implements

parcelable

public

static

final creatorcreator = new creator()

@override

public person newarray(int size)

};@override

public

intdescribecontents()

@override

public

void

writetoparcel(parcel dest, int flags)

}

使用Intent 傳遞物件

intent 的用法相信你已經比較熟悉了,我們可以借助它來啟動活動 傳送廣播 啟動服務等。在進行上述操作的時候,我們還可以在intent 中新增一些附加資料,以達到傳值的效果,比如在firstactivity 中新增如下 intent intent new intent firstactivity....

Intent傳遞物件

serializable即序列化,將物件轉化成可儲存與傳輸狀態。public class student implements serializable public string getid public void setname name public string getname public...

使用Intent傳遞資料

我們先重點講解如何使用intent在多個activity之間傳遞資料,根據前面的介紹我們應該已經清楚,要從activity1傳遞資料到activity2重點是startactivity 和startactivityforresult 兩個方法。1.無引數activity跳轉 intent it ne...