2012-01-26 184 views
0

我有一個應用程序有三個活動,讓我們打電話給他們A,B和C的約定。Android中的活動生命週期

A用StartActivity調用B.

當用戶點擊後退/取消按鈕時,我必須調用Activity C,所以我在Activity B的OnPause中實現了調用Activity C,並且需要從Activity C返回,所以我使用startActivityForResult調用Activity C並實現了在Activity B中的onActivityResult方法獲取返回值。

一切工作正常,但是當活動結束Ç,應用正在恢復到活動A,我需要活動B.

我要再次明確呼叫活動B或我做了什麼了嗎?

回答

2

我真的不確定你想用這種行爲實現什麼。無論如何,你從C返回到A,因爲你按下了Back鍵,並沒有在onBackPressed()中覆蓋它的行爲。所以當前的Activity(B)剛剛完成,因此onPause()被調用,因此C開始。但是在C變得活躍的時候,你只能在Activity堆棧上擁有A和C.

您需要重寫ActivityB中的onBackPressed(),並從那裏調用C,忘記onPause()。

1

您不應該在回擊按鈕上調用其他活動。後退按鈕會將活動(B)彈出堆棧。當您從Activity B中單擊時,Android將完成該活動並殺死它。這是一個標準的工作流程,最好不要搞亂。在活動B中放置一些按鈕,並從那裏調用C獲得結果,然後您將能夠在B活動中獲得結果。

0

當你到達活動B中的onPause()時,它已經關閉,所以當你回到它時,它就會消失。
正如你所說,你可以在完成時從C開始B,或者在B的onBackPressed()中啓動C(然後在不調用super方法的情況下從該方法返回)。這會覆蓋默認操作以關閉活動。