现在的位置: 首页 > 综合 > 正文

从子activity返回数据给父activity————Starting Activities and Getting Results

2014年01月30日 ⁄ 综合 ⁄ 共 953字 ⁄ 字号 评论关闭

有时候我们希望子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));
             }
         }
     }
 }

抱歉!评论已关闭.