我想在Xamarin.Android
應用程序中將Class Object
從一個活動傳遞給另一個活動。 我可以使用Intent.PutExtra
方法傳遞簡單的字符串。將數據從一個活動傳遞到另一個Xamarin.Android
有人知道嗎。 anyhelp表示讚賞:)
我想在Xamarin.Android
應用程序中將Class Object
從一個活動傳遞給另一個活動。 我可以使用Intent.PutExtra
方法傳遞簡單的字符串。將數據從一個活動傳遞到另一個Xamarin.Android
有人知道嗎。 anyhelp表示讚賞:)
該概念與標準(非Xamarin)應用程序相同。
您可以使用Intent#putExtra(String, Parcelable)
將實現Parcelable
接口的任何對象作爲附加參數傳遞。
Parcelable
接口有點複雜,所以請務必閱讀文檔以確保您的類符合要求。有關創建Parcelable
類的更多信息,您可能還想查看this SO question。
您無法通過Intent
傳遞對象引用。這是因爲活動旨在完全獨立於對方工作。用戶可以在執行其他任務時將您的Activity放在後臺,因此完全有可能(也很可能)您的Activity的變量將被垃圾收集。當用戶稍後回到您的活動時,它應該能夠重新創建其狀態。
如果您確實需要直接傳遞對象的引用,可以通過將該對象設置爲靜態變量來實現。雖然這是解決從一個Activity到另一個Activity的數據的問題的快速和骯髒的方法,但它並沒有解決在某個時刻可能被垃圾收集的變量的問題,並且通常是糟糕的設計選擇。
只要加入以防其他人遇到此問題。 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"));
這比在我看來使用靜態引用更好。
謝謝,它真的沒有出現在我的腦海裏:)但我需要通過引用傳遞對象:) – loop 2014-10-02 20:55:05
您可以在Xamarin商店中使用一個稱爲簡單存儲的組件,從根本上爲您完成艱苦的工作。 https://components.xamarin.com/view/simple-storage – InitLipton 2014-09-26 12:36:35