有时候我们希望子activity可以向父activity返回数据,比如我们利用StartActivity来打开一个联
系人的页面,希望用户可以选择一个联系人,并且返回给父Activity。
要实现这样的效果,可以使用startActivityForResult(Intent, int)这里的int值是用来标识动作的
(identifying the call)。结果我们可以在父activity的onActivityResult中获取。
当子Activity退出的时候,可以调用setResult(int)来返回数据给父Activity,必须要提供result
code,例如RESULT_CANCELED, RESULT_OK, 或者任何从RESULT_FIRST_USER开始的自定义结果。我们
也可以选择返回一个有附加数据的intent,
public class MyActivity extends Activity {
...
static final int PICK_CONTACT_REQUEST = 0;
protected boolean onKeyDown(int keyCode, KeyEvent event) {
if (keyCode == KeyEvent.KEYCODE_DPAD_CENTER) {
// When the user center presses, let them pick a contact.
startActivityForResult(
new Intent(Intent.ACTION_PICK,
new Uri("content://contacts")),
PICK_CONTACT_REQUEST);
return true;
}
return false;
}
protected void onActivityResult(int requestCode, int resultCode,
Intent data) {
if (requestCode == PICK_CONTACT_REQUEST) {
if (resultCode == RESULT_OK) {
// A contact was picked. Here we will just display it
// to the user.
startActivity(new Intent(Intent.ACTION_VIEW, data));
}
}
}
}