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