intent傳遞物件得到的物件與傳入的物件不同

2022-02-25 21:44:55 字數 3289 閱讀 1734

1樓:

現在我覺得你的這個  intent  有問題, 按照你說的,明顯在  bactivity 在 intent

中取出的 a 是乙個預設的。

如果  intent   在  aactivity和  bactivity  中是同乙個例項,是不會有問題的。

看下邊的例子。

public class activitytest}class a

class aactivity

public void start()

}class bactivity

public void start()

}class intent

輸出結果:

a@69b332

a@69b332

2樓:you酒今朝醉

這個是intent的傳遞機制決定的。

在android中,只有實現了serializable/parcelable的物件才可以通過intent傳遞,因為intent是可以在不同程序間傳遞的,故傳遞的物件必須不能指向某乙個jvm的記憶體區,所以需要通過序列化生成乙個新的物件。

也就是說,你通過intent傳遞的物件,只是乙個當前物件的深度轉殖,和原物件資料相同,但無論在stack還是heap中指向的都是不同的位址。

因為在序列化物件的時候需要進行深度轉殖,所以對於較大的物件要考慮通過其他方式共享(比如靜態變數)。

此外,這樣還可以一定程度上避免記憶體洩漏的問題。

3樓:匿名使用者

,設定a的屬性value=2

4樓:匿名使用者

裡獲取物件a賦值給a

5樓:梁城敏銳

貼**,應該是型別不一致

android 用intent傳遞物件的問題

6樓:匿名使用者

putserializable,是通過物件的序列化和反序列化來實現activity之間物件的傳遞的,所以這種方法得到的就是兩個完全不一樣的物件(activity2中的物件obj就相當於new了乙個新物件,然後將activity1中的物件obj的值都賦給了它,所以可以說它們的內容是一樣的,但是物件不一樣.).

注:通過上述方法傳遞的物件obj一定要實現serializable介面才可以哦!

一般在activity之間是不做物件的傳遞的吧,序列化和反序列化本身就沒有一定的弊端吧(個人感覺),呵呵...而且物件都要實現serializable介面.

如果一定要傳物件的話可以在做一些靜態的類或物件!

希望對你有幫助 ^_^!

7樓:匿名使用者

不會是同一物件,因為你傳送和接收的是兩個介面,是再第二個介面new了個物件然後把上個介面傳過來的值賦值給它,樓上說的靜態可以用,那樣就不用intent傳值了,直接拿來用

intent如何傳遞標準類物件

8樓:匿名使用者

intent intent = new intent(this,activityb.class);intent.putextra("key","value");startactivity(intnet);然後到activitybintent intent = getintent();string xx=intent.

getstringextra("key");

9樓:匿名使用者

為了讓個更多的人看到帖子,我頂

10樓:匿名使用者

罈子裡不能沒有像樓主這樣的天才呀!

11樓:匿名使用者

我表示我剛看走眼了。

android activity之間傳遞物件 物件為什麼要序列化

12樓:約定

因為android處理intent的時候是拷貝intent,如果傳遞的物件不序列化,那麼傳遞的只是物件的引用

13樓:有車

這事由於intent的api決定的,intent沒有object的值。

android 中傳遞物件的集合

14樓:

intent intent = ....;//intent定義

arraylistlist = .....;//list賦值

intent.putextra("userlist", list.toarray());

startactivity(intent);

前提是list中的user必須implements serializable

接收時:

intent intent = this.getintent();

object cobjs = (object) intent.getserializableextra("userlist");

for (int i = 0; i < cobjs.length; i++)

15樓:千鋒教育

方法1:

直接讓user類繼承serializable或者parcelable介面即可,intent只可以傳輸序列化的物件

//user類

public class user implements serializable

//直接加入intent

listlist = new arraylist();

intent intent = new intent();

intent.putextra("list",list);

方法2:

把list集合轉為字串表示,可以使用json格式,直接用gson框架轉換即可,再到另乙個activity轉換回來

listlist = new arraylist();

type type = new typetoken()>(){}.gettype();

string json = new gson().tojson(list,type);

intent.putextra("list",json);

//轉換回list

string json = getintent.getstringextra("list");

type type = new typetoken()>(){}.gettype();

listlist = new gson().fromjson(json,type);

如何利用intent物件傳遞字串

C 語言中,可以在通過傳遞檔案物件,然後通過這個函式讀取資料嗎

cin和cout重定向不正確,應該如下修改 int main int argc,char argv 在main函式這裡,你居然這麼寫 ifstream cin in2.txt 請問cin是什麼?cin在預設情況下是c 的一個全域性物件,你這麼寫就等於在main裡定義了一個區域性物件cin,你自己定義...

物件」和「物件的屬性」指的是什麼

物件是類的例項,類是相同結構的物件的抽象。同類的各個物件其實擁有相同的屬性和方法,只是屬性值不同而已。好比學生類中的學生物件,每個學生的屬性 身高,學號等 類的屬性說的應該就是靜態變數 static修飾符 就是在類載入的時候,就已被分配了記憶體 存在於靜態區 只有乙份,所以new出來的物件都共享此屬...

找物件的說說,想找物件的說說

辣辣 一 找個真心的男人一起過愛我就可以。二 擁抱,非常奇妙,增進情誼,減少煩惱,不但資源挺好,而且低碳環保,常用有益健康,還有美容功效。擁抱情人節,擁抱一下就知道什麼是美妙。祝好!三 找一個適合自己的。不離不棄。生死相依。四 找物件並不難,找到能完完全全接受自己的太難了,太難太難了。五 年齡大了就...