Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/android/197.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在android活动测试中,我如何完成我的主要活动启动的另一个活动?_Android_Testing_Android Activity - Fatal编程技术网

在android活动测试中,我如何完成我的主要活动启动的另一个活动?

在android活动测试中,我如何完成我的主要活动启动的另一个活动?,android,testing,android-activity,Android,Testing,Android Activity,我正在为我们用3个按钮编写的活动编写一个活动测试。其中2个按钮启动其他活动 我可以编写一个模拟按钮按下的测试,然后检查所需的活动是否正在运行,但我不能从第二个活动中后退。第二个活动停留在前端,并阻止假定第一个活动正在运行的其他测试正常工作。他们只是有点僵硬 我有一个对第一个活动的引用,但这是我需要调用finish()的第二个活动。有办法做到这一点吗 编辑:在此要点中,我添加了一些实际的源代码来说明我的问题: 它特别是关于测试活动。在生产代码中,一切都很好。您需要一种方式让您的活动彼此通信,以便一

我正在为我们用3个按钮编写的活动编写一个活动测试。其中2个按钮启动其他活动

我可以编写一个模拟按钮按下的测试,然后检查所需的活动是否正在运行,但我不能从第二个活动中后退。第二个活动停留在前端,并阻止假定第一个活动正在运行的其他测试正常工作。他们只是有点僵硬

我有一个对第一个活动的引用,但这是我需要调用finish()的第二个活动。有办法做到这一点吗

编辑:在此要点中,我添加了一些实际的源代码来说明我的问题:


它特别是关于测试活动。在生产代码中,一切都很好。

您需要一种方式让您的活动彼此通信,以便一个活动可以告诉另一个活动完成。有几种方法可以实现这一点。一种方法是在我的应用程序中创建服务;我的“第二个”活动将连接到此服务以注册接收消息的方式,而我的主要活动将连接以提供消息。

在活动1中添加以下内容以启动活动2

Intent myIntent = new Intent(view.getContext(), Activity2.class);
startActivityForResult(myIntent, 0);
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
在Activity2中,添加以下内容以启动Activity1和完成Activity2

Intent myIntent = new Intent(view.getContext(), Activity2.class);
startActivityForResult(myIntent, 0);
Intent intent = new Intent();
setResult(RESULT_OK, intent);
finish();
有关更多详细信息:

  • 如果使用startActivityForResult启动活动,则可以使用从父级关闭活动

    要启动活动:
    startActivityForResult(新意图(…),123123/*requestCode*/)

    当您想(从调用者)完成该活动时,请使用:
    finishActivity(123123/*requestCode*/)

  • 还有一种方法可以找到子活动是否完成。但是,只有当子活动为self调用finish()时,才能跟踪这一点。要从子级接收子级完成请求,需要重写父级活动中的方法


您可能应该使用来获取第二个活动的引用,或者您可以阻止启动第二个活动(仍然可以保证在框架之前启动第二个活动的调用已经到达)。

您好,一切正常。我的问题是Activity1的活动测试。我可以验证它是否启动Activity2,但Activity2只是停留在那里,阻止其他Activity1测试运行。请发布您的代码,这将更有助于有效地回答您。在这种情况下,用户执行一些操作,如按下按钮或单击“后退”,第二个活动自行完成,然后返回第一个活动。这一切在生产中都很好,问题是如何在第一个活动的测试中完成第二个活动。我的问题是如何在活动测试中完成。如果我有一个针对ActivityOne的测试,我想测试ActivityOne上的一个按钮是否启动ActivityTwo,这是可行的,但是没有其他测试可以运行,因为ActivityTwo位于前台。在启动新测试之前,可以为ActivityTwo调用finishAcitivity()。+1这是正确的方法,对于代码示例,请查看。