2016-01-06 30 views
0

我目前有以下邏輯來在活動之間傳遞數據。活動數據傳遞Android Xamarin

Intent resumeMainActivity = new Intent (this, typeof(RecordNowController)); 
resumeMainActivity.PutExtra ("EditedData", editContent); 
StartActivity(resumeMainActivity); 

數據通過罰款,但它重新創建活動。

Intent resumeMainActivity = new Intent (this, typeof(RecordNowController)); 
resumeMainActivity.PutExtra ("EditedData", editContent); 
-->resumeMainActivity.AddFlags(ActivityFlags.ReorderToFront); 
resumeMainActivity.PutExtra ("EditedData", editContent); 
StartActivity(resumeMainActivity); 

添加該行將恢復我當前的活動,而不是創建一個新的活動。但由於某些原因,數據無法通過。

有人知道這是爲什麼嗎?

謝謝。

+0

這第二把多餘的右邊是一個錯字的錯誤,它不存在源。 – conor

回答

0

這是默認的行爲,如果你不希望創建一個新的,然後使用

resumeMainActivity.AddFlags(ActivityFlags.SingleTop);

從文檔:

無論是否活動可以從任務移動開始它到它接近任務的任務 - 如果它可以移動,則爲「真」;如果它必須與開始的任務保持一致,則爲「假」。
如果未設置此屬性,則由<application>元素的相應allowTaskReparenting屬性設置的值將應用於該活動。默認值是「false」。

正常情況下,當一個活動開始時,它與啓動它的活動的任務相關聯,並且它在整個生命週期中都處於此狀態。您可以使用此屬性強制它重新執行與其當前任務不再顯示時具有相似性的任務。通常,它用於使應用程序的活動轉移到與該應用程序關聯的主要任務。

例如,如果電子郵件包含指向網頁的鏈接,則單擊該鏈接將顯示可顯示頁面的活動。該活動由瀏覽器應用程序定義,但作爲電子郵件任務的一部分啓動。如果重新設置爲瀏覽器任務,則當瀏覽器出現在前面時會顯示該信息,並且在電子郵件任務再次出現時將不會顯示。

活動的關聯性由taskAffinity屬性定義。通過讀取其根活動的親和力來確定任務的親和力。因此,根據定義,根活動總是在具有相同親和力的任務中。由於具有「singleTask」或「singleInstance」啓動模式的活動只能是任務的根源,因此重新生育僅限於「標準」和「單獨」模式。 (另請參閱launchMode屬性。)

SingleTop將傳遞數據就好了。