首页 理论教育 如何在Android中通过启动Activity获得结果

如何在Android中通过启动Activity获得结果

时间:2023-06-28 理论教育 版权反馈
【摘要】:有时,可能需要从启动的Activity获得结果,也就是A启动B,B再返回数据给A。在B Activity中,使用Intent向onActivityResult()函数返回结果。在大多数情况下,不应使用这些方法显式结束Activity。Android系统会管理Activity的生命周期,因此无须开发人员编写代码结束Activity。调用这些函数可能对预期的用户体验产生不良影响,因此只应在确实不想让用户返回此Activity实例时,才编写代码结束Activity,而不依赖系统结束Activity。

如何在Android中通过启动Activity获得结果

有时,可能需要从启动的Activity获得结果,也就是A启动B,B再返回数据给A。在这种情况下,通过调用startActivityForResult()(而非startActivity())来启动Activity。要想在A中收到B返回的数据,需要实现onActivityResult()函数。在B Activity中,使用Intent向onActivityResult()函数返回结果。

在App Inventor 2的条码扫描器组件的源码文件BarcodeScanner.java中,有如下代码:

在App Inventor 2中的Form.java文件中有如下代码:

使用扫描功能时,在Barcode Scanner类的Do Scan()函数中调用startActivity For Result()函数启动扫描Activity,扫描完成后,把得到的数据传递给Form类的onActivityResult()函数,最终调用Barcode Scanner类的result Returned()函数处理扫描数据。(Screen对应Activity,条码扫描器组件附着在Screen上,所以把数据传递给Form类的onActivityResult()函数)。(www.xing528.com)

在result Returned()函数中,首先检查请求是否成功(如果成功,则result Code将为RESULT_OK),以及是否是指定请求返回的数据,也就是将requestCode与startActivityForResult()函数发送的第二个参数匹配。只有请求成功,且requestCode匹配成功后,才处理data参数返回的数据。

可以通过调用Activity的finish()函数来结束当前Activity,还可以通过调用finishActivity()函数结束当前之前启动的另一个Activity。

在大多数情况下,不应使用这些方法显式结束Activity。Android系统会管理Activity的生命周期,因此无须开发人员编写代码结束Activity。调用这些函数可能对预期的用户体验产生不良影响,因此只应在确实不想让用户返回此Activity实例时,才编写代码结束Activity,而不依赖系统结束Activity。

免责声明:以上内容源自网络,版权归原作者所有,如有侵犯您的原创版权请告知,我们将尽快删除相关内容。

我要反馈