gpt4 book ai didi

android - ActivityResult 未返回到仪器测试中的调用 Activity

转载 作者:行者123 更新时间:2023-11-29 00:38:17 26 4
gpt4 key购买 nike

我正在使用下面介绍的方法来验证我正在测试的 Activity 是否启动了另一个 Activity。

Instrumentation.addMonitor (IntentFilter filter, Instrumentation.ActivityResult result, boolean block)

根据文档,block 参数控制监视器是否应阻止 Activity 启动(返回其预设结果)。这就是我想要实现的目标——我想将 AcitivityResult 返回到调用 Activity :onActivityResult()。我使用的代码如下:

Intent resultIntent = new Intent();
Bundle bundle = new Bundle();
bundle.putLong(ActivityBundleKeys.KEY_TEST, 2L);
resultIntent.putExtras(bundle);
ActivityResult result = new ActivityResult(Activity.RESULT_OK, resultIntent);
ActivityMonitor monitor = mInstr.addMonitor(MapViewActivity.class.getName(), result, true);
mSolo.clickOnView(btnMap); //button properly clicked, activity started
Activity currentActivity = mInstr.waitForMonitor(monitor);

如果我理解正确,如果我将“true”传递给 addMonitor(),启动应该被阻止并且我的调用 Activity 应该收到模拟结果。它没有发生。请求的 Activity 正常启动,并且在模拟器中可见。结果不会返回到调用 Activity 。有人遇到过类似的问题吗?

最佳答案

Solo 使用一个内部 ActivityMonitor 来捕捉所有的 Intent ,并且只有第一个匹配的监视器被命中,所以你的监视器永远不会被命中,因为它是在 Solo 的 ActivityMonitor 之后创建的。

你可以通过在 Solo 的之前插入你的显示器来让它工作,就像这样:

ActivityMonitor soloMonitor = mSolo.getActivityMonitor();
mInstr.removeMonitor(soloMonitor);
ActivityMonitor monitor = mInstr.addMonitor(MapViewActivity.class.getName(), result, true);

// Put back Solo's monitor after yours
mInstr.addMonitor(soloMonitor);

关于android - ActivityResult 未返回到仪器测试中的调用 Activity ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11232519/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com