1、在调用另外一个activity时是为了得到返回来的值时,若选择通讯录时候进入通讯录只是返回一个电话号码等等,我们可以调用startActivityForResult();
Intent intent=new Intent(); intent.setAction("com.example.multiactivity.SecondActivity3"); intent.addCategory("android.intent.category.DEFAULT"); Bundle b=new Bundle(); b.putString("name1", "zp"); b.putString("name2", "db"); intent.putExtras(b); startActivityForResult(intent, 0);//0参数是请求码,一般设为0,在调用多个activity时候请求码用来标识是哪个请求返回的数据。
2、通常是在点击事件,如listview的item中点击选择了联系人,就返回联系人,即在被调用的activity里将数据存入intent,并调用finnish返回数据
Intent in=new Intent(); in.putExtra("name3", "cy"); setResult(0, in); //此处的0是结果码,用户可以给结果码设定特殊的含义例如此处若是联网操作,可以定义结果码为200时候是返回连接成功,出现异常时候返回403 连接错误 finish();
3、在返回的activity里要覆写onActivityResult(int requestCode, int resultCode, Intent data)方法,
@Override protected void onActivityResult(int requestCode, int resultCode, Intent data) { // TODO Auto-generated method stub super.onActivityResult(requestCode, resultCode, data); System.out.println("请求码:"+requestCode); System.out.println("结果码:"+resultCode); //结果码为返回时候设置的 if(requestCode==0)//所有的返回数据的操作都是调用该函数完成,当多次调用activity返回的值时候,根据startActivityForResult时候设置的请求码来处理 { String st="1"; if(data!=null) st=data.getStringExtra("name3"); ed.setText(st); } }
例如下图的操作,点击“选择第一个联系人”时将requestcode设为0,在点击“选择第二个联系人”请求码设为1,在onActivityResult(int requestCode, int resultCode, Intent data)方法里根据返回的requestCode来采取相应的操作,将相对应Edittext里的数据设为电话号码。
时间: 2024-10-09 14:51:12