繁体   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