Android学习-启动服务startActivityForResult调用activity并覆写onActivityResult()接收返回来的信息


  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");//data返回回来的数据,为第二个参数
	ed.setText(st);
	}
}

  

例如下图的操作,点击“选择第一个联系人”时将requestcode设为0,在点击“选择第二个联系人”请求码设为1,在onActivityResult(int requestCode, int resultCode, Intent data)方法里根据返回的requestCode来采取相应的操作,将相对应Edittext里的数据设为电话号码。

 


免责声明!

本站转载的文章为个人学习借鉴使用,本站对版权不负任何法律责任。如果侵犯了您的隐私权益,请联系本站邮箱yoyou2525@163.com删除。



 
粤ICP备18138465号  © 2018-2025 CODEPRJ.COM