Android中请求码(RequestCode)和结果码(ResultCode)是开发中比较常用的概念。它们是通过调用`startActivityForResult()`方法启动Activity,并在Activity A中接收来自Activity B返回数据的方式。
请求码用于标识请求的来源,通常用一个正整数来表示。它用来启动另一个Activity,告诉它调用方法执行某个特定任务,例如获取结果数据、选择图片等。在主Activity中使用`startActivityForResult(Intent intent, int requestCode)`方法启动一个新的Activity时,必须为它提供一个请求码,以便在回调时能够正确处理数据。请求码必须是大于等于0的整数,但不能超过`2^16 - 1`,即65535。
结果码用于标识返回数据的状态,通常用一个整数来表示,这个整数大部分是由Android内部定义的一些常量,如`RESULT_OK`表示操作成功返回,`RESULT_CANCELED`表示操作被取消,还有其他一些常量可以供选择,也可以定义自己的常量。返回给主Activity时,必须设置一个结果码,并使用`setResult(int resultCode, Intent data)`方法将返回的数据(如果有的话)放入Intent中。
一般情况下,在子Activity中,假设你需要返回一些数据给父Activity,你需要在子Activity中通过调用`setResult()`方法来设置结果码和返回数据,并使用`finish()`方法来结束当前Activity,将数据返回给调用者。在父Activity中,通过覆写`onActivityResult(int requestCode, int resultCode, Intent data)`方法来接收返回数据。在回调方法中,根据请求码和结果码来获取对应数据。
在使用`startActivityForResult()`方法时需要注意以下几点:
1. `startActivityForResult()`方法是异步的,调用后会立即返回,并不会等待结果返回,所以这个方法会立刻将控制权返回给主Activity。直到子Activity调用完`finish()`方法,控制权再次回到主Activity时,才会触发`onActivityResult()`方法。
2. 请求码和结果码必须在整个APP内唯一,不能与其他Activity重复。
3. 如果子Activity无法完成请求任务,它可以调用`setResult()`方法,将结果码设置为`RESULT_CANCELED`,并返回主Activity。
4. 如果在父Activity中处理数据时发生错误,可以调用`setResult()`方法,将结果码设置为`RESULT_CANCELED`,并返回子Activity。
5. 在Android 11之前,已经标记为deprecated的方法`startActivityForResult`已被官方文档所弃用,推荐使用新的Activity结果API,即`ActivityResultLauncher`,它将提供更好的API,实现更加灵活的用户交互,以及更好的兼容性。
总之,请求码和结果码是Android开发中非常重要的概念,它们是实现Activity之间数据传递的重要方式。我们需要根据具体应用场景,适当地设置请求码和结果码,以便更好地完成数据传递任务。
友情提示:抵制不良游戏,拒绝盗版游戏。 注意自我保护,谨防受骗上当。 适度游戏益脑,沉迷游戏伤身。 合理安排时间,享受健康生活。适龄提示:适合18岁以上使用!
发表评论 取消回复