![](/img/trans.png)
[英]In Android, how do I test an activity that depends on the result of another activity?
[英]From within an android activity test, how do I finish another activity that my main activity started?
我正在為我們用3個按鈕編寫的活動編寫活動測試。 其中2個按鈕啟動其他活動。
我可以編寫一個模擬按鈕按下的測試,然后檢查所需的活動是否正在運行,但我無法從第二個活動中退回。 第二個活動停留在前面,並阻止其他測試(假設第一個活動正在運行)正常工作。 他們只是凍結了。
我有第一個活動的參考,但它是我需要的第二個活動,我猜調用finish()。 有沒有辦法做到這一點?
編輯:我添加了一些實際的源代碼來說明我的問題: https : //gist.github.com/3076103
它專門用於測試活動。 在生產代碼中一切都很好。
您應該使用http://developer.android.com/reference/android/app/Instrumentation.ActivityMonitor.html來獲取第二個活動的參考,或者您可以阻止第二個活動被啟動(仍然保證您調用啟動第二個活動infact已達到框架)。
您需要一種方法讓您的活動相互通信,以便一個活動可以告訴另一個活動完成。 有幾種方法可以實現這一目標。 一種方法是在我的應用程序中創建服務; 我的“第二”活動將連接到此服務以注冊接收消息的方式,我的主要活動將連接以提供它們。
在Activity1中添加以下內容以啟動Activity2
Intent myIntent = new Intent(view.getContext(), Activity2.class);
startActivityForResult(myIntent, 0);
在Activity2中添加以下內容以啟動Activity1並完成Activity2
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
有關詳細信息,請訪問: http : //www.warriorpoint.com/blog/2009/05/24/android-how-to-switch-between-activities/
如果使用startActivityForResult啟動活動,則可以使用finishActivity(int requestCode)關閉父活動。
要開始活動:
startActivityForResult(new Intent(...), 123123 /*requestCode*/);
當你想完成那個活動(來自來電者)時,使用:
finishActivity(123123 /*requestCode*/)
還有一種方法可以找到兒童活動是否已經完成。 但是,只有在子活動為自己調用finish()時才能跟蹤此信息。 要從子級接收子完成請求,您需要覆蓋父活動中的finishFromChild()方法。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.