2014-09-25 162 views
6

我想在Xamarin.Android應用程序中將Class Object從一個活動傳遞給另一個活動。 我可以使用Intent.PutExtra方法傳遞簡單的字符串。將數據從一個活動傳遞到另一個Xamarin.Android

有人知道嗎。 anyhelp表示讚賞:)

+0

您可以在Xamarin商店中使用一個稱爲簡單存儲的組件,從根本上爲您完成艱苦的工作。 https://components.xamarin.com/view/simple-storage – InitLipton 2014-09-26 12:36:35

回答

3

該概念與標準(非Xamarin)應用程序相同。

您可以使用Intent#putExtra(String, Parcelable)將實現Parcelable接口的任何對象作爲附加參數傳遞。

Parcelable接口有點複雜,所以請務必閱讀文檔以確保您的類符合要求。有關創建Parcelable類的更多信息,您可能還想查看this SO question

您無法通過Intent傳遞對象引用。這是因爲活動旨在完全獨立於對方工作。用戶可以在執行其他任務時將您的Activity放在後臺,因此完全有可能(也很可能)您的Activity的變量將被垃圾收集。當用戶稍後回到您的活動時,它應該能夠重新創建其狀態。

如果您確實需要直接傳遞對象的引用,可以通過將該對象設置爲靜態變量來實現。雖然這是解決從一個Activity到另一個Activity的數據的問題的快速和骯髒的方法,但它並沒有解決在某個時刻可能被垃圾收集的變量的問題,並且通常是糟糕的設計選擇。

+0

是否將對象作爲參考傳遞? – loop 2014-09-25 19:44:10

+0

不會。它會被捆綁到一個'Parcel'中,然後在檢索它時從這個'Parcel'中恢復。 – 2014-09-25 19:45:09

+0

如何實現此對象的引用傳遞給另一個活動? – loop 2014-09-25 19:46:32

12

只要加入以防其他人遇到此問題。 Xamarin/.NET的好處是使用JSON是多麼容易。您可以將數據序列化爲一個字符串,並通過Extras來傳遞。

JSON.NET是一個很好的庫(你可以在Xamarin組件庫中找到),也有一些內置於.NET的JSON類。使用JSON.NET的例子就是這樣。

Intent i = new Intent(Application.Context, typeof(SecondActivity)); 
i.PutExtra("key", JsonConvert.SerializeObject(myObject)); 
StartActivity(i); 

而在其他Activity你可以反序列化。

var obj = JsonConvert.DeserializeObject<OBJ_TYPE>(Intent.GetStringExtra("key")); 

這比在我看來使用靜態引用更好。

+0

謝謝,它真的沒有出現在我的腦海裏:)但我需要通過引用傳遞對象:) – loop 2014-10-02 20:55:05

相關問題