2010-06-20 71 views
1

我對android非常陌生,所以我正在試驗教程代碼。特別是記事本。將引用傳遞給另一個活動 - Android

如果你看這裏:http://developer.android.com/resources/tutorials/notepad/notepad-ex2.html,在第5步他們正在放的值,以便它可以由NoteEdit使用。

我想將NotesDbAdapter的引用傳遞給NoteEdit,以便我實際上可以做一些完全不同的事情。

雖然它似乎沒有調用構造函數。我曾嘗試在NoteEdit onCreate中添加paramiter,但它似乎不喜歡這樣? :-(

我最期待聽到你的答案,專家!:-D

+1

你爲什麼想這樣做?其實,這是不鼓勵和難以實現的。 – Cristian 2010-06-20 13:03:20

回答

3

PUT/GET演員不是通過構造函數傳遞,你必須從意圖明確閱讀,很可能在onCreate方法

第一個活動

Intent myIntent = new Intent(); 
myIntent.putExtra("key", "value"); 
startActivity(myIntent); 

新的活動

代碼的onCreate

Intent myIntent = getIntent(); 
myIntent.getExtra("key"); 

如果你想通過自定義類,你的類必須實現序列化,然後您可以通過閱讀:

Bundle e = getIntent().getExtras(); 
Object obj=(Object) e.getSerializable("key"); 
+0

我的「自定義」類應該實現可序列化? – Gibbon 2010-06-20 13:06:41

+0

對於第一個活動中的數據庫工作並將其與意圖一起傳遞,會更好嗎? 它需要有兩個細節。我的數據庫的值是這樣的: 「動物」,「貓」 「動物」,「狗」 「食物」,「馬鈴薯」 – Gibbon 2010-06-20 13:09:47

+0

創建一個簡化類,它存儲你想要傳遞的字段,枚舉類型類。這個類將實現可序列化。然後,您可以將數據放入您想要的任何活動或模型級別的該課程中。你可以將它傳遞給另一個具有意圖的活動,並且你會根據需要讀取數據。如果您需要傳遞5個字段,請保持簡單,創​​建一個包含5個成員的類來存儲數據。或者更簡單一些,您可以使用Extras來避免這一步驟。我不知道你的結果有多複雜。 – Pentium10 2010-06-20 13:17:28

2

我同意Castiblanco先生。不要試圖做到這一點。

您的Adapter持有對主Activity的引用,該主ActivityAdapter所附的ListView相關。如果您要將Adapter轉換爲新的Activity,那麼您的新Activity將保留對舊Activity的引用。這將阻止Android能夠銷燬您的舊版本Activity以釋放其他應用程序的內存,因爲您的新版本Activity將保留對其的引用,從而防止垃圾收集。

如果您需要在活動之間共享數據模型,請在該活動外部保存該數據模型(例如數據庫,ServiceApplication)。您的Adapter不是您的數據模型。

+0

所以,我要重新聲明數據庫類和連接在我的編輯類? – Gibbon 2010-06-20 13:34:45

+0

或者,正如我在另一評論中所說的那樣。 某些在extras中傳遞的數組映射? – Gibbon 2010-06-20 13:36:30

+0

「我應該在我的Edit類中重新聲明數據庫類和連接?」這是一種方法。 「某種數組映射是在extras中傳遞的?」正如我寫的,如果您需要在活動之間共享數據模型,請將這些數據模型保存在這些活動之外(例如數據庫,服務,應用程序)。通過附加組件在活動之間傳遞整個數據模型並不是我會推薦的方法。 – CommonsWare 2010-06-20 14:12:16

相關問題