西木 2011-08-17
做一个app,用到了startActivityForResult(intent, requestCode)这个方法,但是在onActivityResult(requestCode, resultCode, data)方法中,收不到消息,纠结半天 ,最好看资料才晓得了答案。
*startActivityForResult(intent, requestCode)首先文档告诉我们,只有到activity结束的时候,才会返回消息。
*startActivityForResult(intent, requestCode)中的俩个参数 ,第一个不用多说。第二个requestCode,一般情况下,我们只需要保证
requestCode>-1即可,这样它都能收到result。但是如果在A activity中,能够跳转到多个activiity,并且要接受到这多个activity中的信息的时候,我们就要注意了,这时候,requestCode就起大作用了,当你startActiviityForResult()的时候, 给每一个不同的activity一个独立的requestcode,那么在你接受到result的时候就可以通过这个参数来判断,结果是那个acitivity返回来的了。
*那么如果是,A activity跳转到B activity的时候,b有可能返回N种结果,而你在A中需要根据这N中不通的返回结果做出N种不通的处理的时候那该怎么办呢?当然,你可以用data,中添加数据了识别,但是Android提供了更好的一种方式,那就是
onActivityResult(requestCode, resultCode, data)中的resultcode,你可以setresult()的时候,根据不通的结果返回不同的resultcode,这样就能区分开来。
至此,发现android的设计不可谓不妙,为google的开发设计人员敬礼。