2010-03-30 107 views
2

我有一項活動,其中使用startActivityForResult方法啓動另一活動。我想以編程方式終止被叫方,但我不知道如何執行此操作,因爲在onActivityResult()方法中我沒有關於被叫活動的信息,因此我無法撥打finish()。我怎樣才能做到這一點?以編程方式完成子活動

感謝

回答

3

嘗試finishActivity(requestCode)。根據文檔,它可以讓您完成以前使用startActivityForResult開始的活動。如果有多個具有相同請求代碼的活動,所有這些都將完成。

注意:我自己並沒有真正嘗試過這個,但這就是文檔所說的!試驗一下,看看它是否做到了你想要的。

+0

好的謝謝,我會嘗試......並讓你們都知道。 – Matroska 2010-03-30 11:09:37

6

的推出Activity可以完成自我:

setResult(RESULT_OK); 
finish(); 
+0

很簡單...很好。 – 2010-12-20 21:37:48

2

在你打電話的那一刻startActivityForResult您的活動將被關閉或暫停,新的活動開始。唯一可以完成新活動的是新活動。

你可以開始一個後臺任務,讓這個後臺任務以某種方式通知你的活動,活動現在可以完成自己。

我不知道如果活動A暫停並且活動B處於活動狀態,則在活動A中創建並傳遞給線索的Handler將保持有效。但我會假設這是有效的,因爲兩個活動都在同一個線程中運行,因此它們應該共享相同的消息隊列。

+0

由於它是SpeechRecognition活動,因此我無法控制已啓動的活動。如果發生錯誤,我想殺了它。 – Matroska 2010-03-30 11:03:24

1

這件事剛咬了我,所以我想我會在這裏添加註釋:


if(readyToFinish()){ 
    finish() 
} 
thisCodeWillBeExecuted() 

我的經驗是,在堆棧跟蹤所有的代碼被執行, 前的活動就結束了。文檔在這一點上並不理想。

相關問題