上次示例中,通过使用startActivity(Intent)方法启动Activity后,启动后的两个Activity之间相互独立,没有任何的关联,在很多情况下,后启动的Activity是为了让用户对特定信息进行选择,在关闭这个Activity后,用户的选择信息需要返回给未关闭的那个Activity
按照Activity启动的先后顺序,先启动的称为父Activity,后启动的称为子Activity
如果需要将子Activity的部分信息返回给父Activity,则可以使用Sub-Activity的方式去启动子Activity
接着让我们来学习一下如何获取子Activity的返回值,一般可以分为以下三个步骤:
一、以Sub-Activity的方式启动子Activity
二、设置子Activity的返回值
三、在父Activity中获取返回值
一、以Sub-Activity的方式启动子Activity需要调用函数startActivityForResult(Intent, requestCode) ;
(注:函数参数Intent用于决定启动哪个Activity,参数requestCode是唯一的标识子Activity的请求码)
显示启动子Activity:
int SUBACTIVITY1 = 1;
Intent intent = new Intent(this, SubActivity1.class);
startActivityForResult(intent, SUBACTIVITY1);
隐式启动子Activity:
int SUBACTIVITY2 = 2;
Uri uri = Uri.parse("content://contacts/people");
Intent intent = new Intent(Intent.ACTION_PICK, uri);
startActivityForResult(intent, SUBACTIVITY2);
二、设置子Activity的返回值
调用setResult()函数将所需的数据返回给父Activity, setResult()函数有两个参数:结果码和返回值
(注:结果码表明了子Activity的返回状态,通常为Activity.RESULT_OK或者Activity.RESULT_CANCELED,结果码均为整数类型;返回值封装在Intent中,子Activity通过Intent将需要返回的数据传递给父Activity。数据主要是Uri形式,可以附加一些额外信息,这些额外信息用Extra的集合表示)
代码如下: