2010-08-10 57 views
4

我有一個主要活動和一個子活動。 主要活動使用startActivity啓動子活動,並在意圖中傳遞一個對象。 子活動在其onCreate操作中讀取對象以外的意圖。 子活動更新對象,然後使用startActivity返回到主活動,並再次傳遞更新的對象。 但是,onCreate函數的主要活動未被調用,所以它包含的用於讀取傳遞對象的代碼不會運行。startActivity應始終運行已啓動的活動onCreate?

進一步調查表明,主要活動onPause事件正在觸發,即它只在子活動運行時暫停,所以當子活動再次啓動主活動時,它只是onResumes。

有誰知道如果我將數據恢復/存儲活動移動到onResume和onPause事件會有什麼不利嗎? 我沒有使用onCreate savedInstanceState,我應該嗎?

你還在其他活動之間傳遞一組數據項而不使用數據庫或這些首選項?我應該使用數據庫嗎?我有大約20個相當個人的數據項。

任何幫助將不勝感激,

  • 弗林克

回答

6

我會檢查出startActivityForResult()方法,而不是僅僅startActivity()

這應該給你傳遞的東西返回給調用活動的一種手段。

http://developer.android.com/reference/android/app/Activity.html

有時你希望得到一個結果,從一個活動回來何時結束。例如,您可以開始一項活動,讓用戶在聯繫人列表中選擇一個人;當它結束時,它返回被選中的人。爲此,可以使用第二個整數參數來調用startActivityForResult(Intent,int)版本來標識調用。結果將通過onActivityResult(int,int,Intent)方法返回。

+0

謝謝,我會試試看。但是,子活動是如何將主動活動中的onActivityResult讀入的? – FrinkTheBrave 2010-08-11 19:54:10

+0

另外,如何傳回onActivityResult中使用的resultCode? – FrinkTheBrave 2010-08-11 20:08:47

+0

看看這裏的例子:http://developer.android.com/guide/appendix/faq/commontasks.html#opennewscreen – 2010-08-11 20:10:15

0

它更可能調用的onResume()或取決於孩子的活動和多少控制它需要在onStart()。

看看這個頁面關於3/4在圖表下。

http://developer.android.com/guide/topics/fundamentals.html alt text

父永遠不會被破壞,因此就不必重新創建它。它應該暫停。您可以像onCreate()一樣覆蓋onResume()和onStart()。

編輯:在子活動中有沒有給用戶的東西?這聽起來像你並不需要一個活動,你只需要一個可以調用方法的java類。

+0

我有一個負載的變量(在類中),我傳遞給子活動,用戶更新它們並將其發回,所以我在子活動中有一個用戶界面。 如果您包含子活動,圖表將如何查看? – FrinkTheBrave 2010-08-11 20:04:23

+0

它會跟着下線。看看綠色活動正在運行節點,它說在活動前面有另一個活動。其他活動是你的子活動。只需重寫onResume和onStart,並向他們中的每一個添加敬酒,以說出哪個人被調用,並且您將知道哪個人被調用。 – Mike 2010-08-11 21:39:54

1

看看活動生命週期here

此外,請考慮使用StartActivityForResult開始您的子活動。

+0

從生命週期中不清楚哪些真實世界的事件導致各種onCreate等方法被調用 – FrinkTheBrave 2010-08-12 09:32:38

0

爲什麼不從主活動中調用startActivityForResult並將數據返回到onActivityResult?這是做這件事的正常方法。

相關問題