1、startActivityForResult的使用场景是什么?onActivityResult回调里面的resultCode和requestCode含义是什么?
当Activity A 打开新的Activity B时,如果A需要在B关闭后获取B返回的数据时, A需要调用startActivityForResult(Intent intent, int requestCode)方法打开新的Activity B,新的Activity B关闭后会向前面的Activity A传回数据,为了得到传回的数据,必须在前面的Activity A中重写onActivityResult(int requestCode, int resultCode, Intent data)。
特别需要注意的是,requestCode必须 >= 0,否则此类效果失效,其效果将变成startActivity()效果。
应用场景:比如最常用的拍照功能。
onActivityResult中回调里面的resultCode和requestCode含义是什么?
resultCode:用于与startActivityForResult()中的requestCode中值进行比较判断,以便确认返回的数据是从哪个Activity返回的。
requestCode :该参数由被打开的Activity 通过其setResult()方法返回。适用于多个activity都返回数据时,来标识到底是哪一个Activity返回的值。
data:一个Intent对象,带有返回的数据。可以通过data.getXxxExtra( )方法来获取指定数据类型的数据。
2、Activity A启动B的时候,在B中何时该执行setResult ?setResult可以位于Activity的finish方法之后吗?
在跳转到原Activity时调用这个方法把Activity B想要返回的数据返回到主Activity。
setResult()不可以位于Activity的finish方法之后。