簡體   English   中英

在Android活動測試中,如何完成我的主要活動開始的另一項活動?

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM