2014-10-28 67 views
2

我有3項活動。比方說A,B,C。主要活動是A.Android三項活動,將數據從第三項活動傳遞給家長活動

我想從A開始B,然後從B開始C,然後在C開啓時關閉B.最後C關閉數據傳遞給A.

特別是Intent和startActivityForResult可能如何呢?後兩種方法完全有可能嗎?

謝謝。

+0

由於B在C關閉前關閉,我認爲您需要另一個地方來存儲C的結果,以便A可以訪問它們。你應該考慮一個單例,或者重寫你的Application對象來保存這些數據。 – 2014-10-28 23:26:15

+0

您可以從活動c開始活動a並在意圖中設置所有數據。只要你有活動a就可以作爲一項活動。然後將調用活動A上的New intent方法。無需爲結果設置活動。 – jvrodrigues 2014-10-28 23:43:27

回答

3

Supose你使用一個按鈕,當您單擊按鈕啓動活動C,就可以完成活動B,並獲得在活動A.活動A.

使用onActivityResult()的作用在這個pont上,你可以使用startActivityForResult()來啓動活動C.

這樣,當您完成C時,您可以再次使用onActivityResult()將數據傳遞給A.

+0

這個伎倆。我不敢相信我從來沒有想過:) – user1319668 2014-10-29 14:44:11

+0

很高興幫助!請接受它作爲答案 – 2014-10-29 15:35:30

+0

會產生生命週期問題嗎? – Gensoukyou1337 2017-07-24 08:06:16

0

您可以始終使用Intents從B和A從B開始B. 當您從堆棧中刪除A時,C無法使用startActivityforResult()和onActivityResult直接將數據傳遞給A。 (這不是很明顯,A甚至不存在於內存中)。 因此,對於A訪問C的數據,您必須將C的數據存儲在某處,以便A可以在下次啓動時訪問它。現在,這裏另一種情況是將其存儲爲持久或非持久數據。如果你希望數據是持久的,所以推薦使用共享偏好,數據庫等,如果你希望它是不可持久的,那麼你可以使用辛格爾頓等

參見:http://developer.android.com/guide/faq/framework.html

1

雷南·洛佩斯費雷拉的回答做到了訣竅。乾杯。

相關問題