欢迎来到天天文库
浏览记录
ID:12408025
大小:2.20 MB
页数:6页
时间:2018-07-16
《黑马程序员安卓教程:开启activity获取返回值二》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库。
1、开启Activity获取返回值二在“开启Activity获取返回值一“中我们已经实现了页面的跳转以及联系人数据的读取。下面我们要实现的是:点击某一条联系人时,将该联系人的电话号码返回到上一个页面。具体实现步骤如下:1.编写点击事件在页面B中编写ListView的点击事件,代码如下例1-1:例1-1lv.setOnItemClickListener(newOnItemClickListener(){@OverridepublicvoidonItemClick(AdapterView>parent,Viewview,
2、intposition,longid){//读取点击条目的电话号码数据Stringphone=infos.get(position).getPhone();//准备一个intent的对象,放置电话号码的数据Intentdata=newIntent();data.putExtra("phone",phone);//设置一个结果数据,数据会返回给调用者setResult(1,data);//关闭掉当前的activity,finish();//结果数据会传递个开启这个activity的组件//通过onActivityRes
3、ult()}});例1-1调用setResult方法将电话号码数据返回到上一个Activity中。下面我们对setResult()方法进一步了解,该方法是Activity中的一个方法,参考API如图1-1所示:图1-1所示从图1-1可知:调用setResult方法可以返回数据到开启这个Activity的开启者。例1-1中setResult(1,data)返回数据是一个Intent类型的data;返回码是一个Int类型的1,可以用来判断返回是否成功。2.接收返回数据在页面A中接收页面B传递过来的数据,代码如下例1-2:
4、例1-2@OverrideprotectedvoidonActivityResult(intrequestCode,intresultCode,Intentdata){if(data!=null){//返回数据的读取Stringphone=data.getStringExtra("phone");//将返回的数据部署在相应的控件上et_phone.setText(phone);}super.onActivityResult(requestCode,resultCode,data);}在页面A所在的Activity中重
5、写onActivityResult方法,该方法用来接收其他Activity返回来的数据。下图1-2是对该方法的官方解释图1-2所示由图1-2可知:onActivityResult会在你开启的Activity退出时调用,同时返回一个你开启这个Activity的请求码以及一个结果码,还会返回一些附加的数据。3.调整跳转页面B点击事件返回数据的设置以及返回数据的接收我们都已经完成了编写,但是这些并不能实现我们的需求。当点击某一条联系人时,该联系人的电话号码并没有被返回过来。这是因为:我们在开启另一个Activity即跳转到
6、联系人列表页面时所使用的方法是startActivity(Intentintent)。查看API了解该方法,如图1-3所示:图1-3所示从图1-3可知:使用startActivity开启另一个Activity时,当这个Activity退出时我们将不会收到任何信息。这也是我们没有返回联系人电话数据的原因所在。若要得到联系人电话数据,我们需要使用另一种方法开启一个Activity,即startActivityForResult。图1-4是API文档对该方法的描述:图1-4所示从图1-4可知:调用该方法开启一个Activi
7、ty。当这个Activity退出时,onActivityResult便会调用,在该方法中可以接收到返回的数据。startActivityForResult有两个参数,第一个参数表示开启另一个Activity的意图,第二个参数是一个请求码。使用startActivityForResult方法开启页面B即联系人数据页面,代码调整如下例1-3:例1-3publicvoidselectContact(Viewview){Intentintent=newIntent(this,ShowContactActivity.class
8、);//开启一个新的activity,注意这个开启的activity跟调用者就没什么关系了。//startActivity(intent);//开启新的activity,并且获取他的返回值startActivityForResult(intent,200);}运行程序,点击页面B的某一个记录,返回电话号码到页面A中,效果如图1-5所示:图1-5
此文档下载收益归作者所有