在开发当中,有时需要从当前界面跳转到其他界面执行操作,操作结束后又从其他界面带着返回得到的数据一起跳转回当前界面,从而实现界面间的数据交流,这种情况便采用回调函数onActivityResult()实现。
回调函数的使用需要三个参数:
①requestCode
请求码,它与对应事件监听中的startActivityForResult()中的requestCode相对应。
②resultCode
应答码,随着需要回传的信息一起传给跳转前界面完成信息传递。
③Intent
需要传递的信息。
其中resultCode、Intent均是由子Activity(跳转后界面)通过setResult()方式将数据返回得到。当前界面使用onActivityResult()函数获取其他界面回传来的消息,如图所示:
在回调函数中,需要先对请求码进行核对,确保得到的数据是来自跳转后的界面。有时候也会对应答码进行核对,确保传回的数据是当前界面想要的数据。
举个例子,当前界面需要从跳转界面获取用户输入的昵称。如下图所示,此时跳转界面将昵称的resultCode设为1,除此外没有别的resultCode。这种情况下,只要requestCode核对无误那么传给当前界面的一定是它想要的信息,对一次暗号即可。
若跳转界面存在两个resultCode,分别对应昵称、密码。由于当前界面只明确表明自己想要跳转界面的信息,这时候昵称、密码都符合回传条件,便都给当前界面传去。当前界面一看,坏了,怎么什么消息都告诉它了呢,有些都不是它想要的。所以需要在当前界面又加一个对resultCode核对的条件,这时两个码都核对无误的就一定是它想要的信息。也就是对两次暗号。
所以,当跳转界面中只有一个需要回传数据的地方时,可以只核对请求码。但若跳转界面存在多个需要回传数据的地方时就要连应答码一起核对。确定信息来源没有问题就可以将获取信息放到需要使用它的位置,继续软件开发。