2013-04-05 141 views
1

我的應用程序包含2個活動。活動A是通過啓動應用程序創建的。在這一個中,我創建了我自己的類MyClass的一個對象。這個類包含一個字符串和3個整數。在活動A中寫下這個對象。 第二個活動B需要讀取此對象。我怎樣才能把它從A傳遞給B?還是有其他解決方案?如何將剛創建的對象從一個活動傳遞給另一個?

+0

[here](http://stackoverflow.com/questions/15747727/pass-arraylist-of-user-defined-objects-to-intent-android/15747819#15747819)檢查這個答案。 – Sajmon 2013-04-05 13:23:22

回答

0

一個選項可以實現Serializable接口,然後您可以使用意圖#putExtra()方法的putExtra(Serializable ..)變體傳遞意圖額外的對象實例。

//to pass : 
    intent.putExtra("MyClass", obj); 

// to retrieve object in second Activity 
getIntent().getSerializableExtra("MyClass"); 
+0

謝謝你,但是我的班級和它的使用引起了一些新的問題。我更喜歡改變我的整個計劃。 – LosTheAlef 2013-04-07 17:25:06

+0

@LosTheAlef:如果連問題都被喚起,也是一個非常令人興奮的應用程序。 ;) – shinjin 2014-04-08 06:56:17

1

有幾個方法,你可以從一個活動傳遞一個對象到另一個:

應用類:這一類是所有應用程序活動可見這樣可以節省你的對象這個類從一個Activity開始,然後從另一個Activity訪問它。

2.您可以將您的Class分解爲簡單變量:string和3個整數,並將它們通過捆綁或從一個活動傳遞到另一個活動,然後再次構造您的對象。

Intent intent = new Intent (this, TargetActivity.class); 
intent.putExtra(KEY, value); 
intent.putExtra(KEY, "value"); 
startActivity(intent); 

如果你的對象實現Serializable/Parcelable,那麼你可以通過束通過。關於如何將對象序列

例子:

How do I serialize an object and save it to a file in Android?

+0

Thx :)但這是什麼「可序列化」? – LosTheAlef 2013-04-05 13:20:26

+1

http://developer.android.com/reference/java/io/Serializable.html – 2013-04-05 13:21:33

+1

想象一下,試圖通過一扇門移動一大塊傢俱,但它太大了。相反,你把它分開,並移動每一塊通過門單個文件。一旦進入,你就會重建這件傢俱。本質上,這就是Serializable允許你做的事情。你可以把一個複雜的對象,解構成一個更簡單的形式,然後重建回覆雜的形式(在這種情況下,通過一個Bundle傳遞後)。 – codebaum 2013-04-05 14:09:44

0

它可能會非常棘手,因爲沒有保證您的應用程序不能活動之間被殺害。實際上,在活動期間可能會死亡,因此保留持久對象可能會非常棘手。

我的首選方法是創建一個類的「單例模式」,其目的是創建一個包含任何要掛起的數據的單個實例。如果您的應用程序被殺害,單身人員實例將會丟失並且必須重新創建,但是所有Android應用程序無論如何都會一直存在這種風險。

請參閱Save multiple instances states of the same Activity in Android,瞭解我在Android中執行單例的情況。

哦,我應該補充說,這隻適用於所有活動在同一個進程中共享相同地址空間的應用程序。否則,你將不得不讓你的對象serialiazable並把它寫到一個文件。

+0

或者,你可以讓你的對象像Emil建議的那樣可序列化。 – 2013-04-05 22:28:32

+0

謝謝,但是我的班級和它的使用引起了一些新的問題。我更喜歡改變我的整個計劃。 – LosTheAlef 2013-04-07 17:25:24

相關問題